.PHONY: help
help:             ## Show the help.
	@echo "Usage: make <target>"
	@echo ""
	@echo "Targets:"
	@fgrep "##" Makefile | fgrep -v fgrep


.PHONY: show
show:             ## Show the current environment.
	@echo "Current environment:"
	@echo "Running using $(VIRTUAL_ENV)"
	@$(VIRTUAL_ENV)/bin/python -V
	@$(VIRTUAL_ENV)/bin/python -m site

.PHONY: fmt
fmt:              ## Format every file with treefmt (alejandra, isort, black).
	nix fmt

.PHONY: lint
lint:             ## Run pep8, type & static checks.
	flake8 sqlelf/ benchmarks/ tests/ tools/
	pyright
	mypy --strict sqlelf tests tools

.PHONY: test
test:             ## Run pytest primarily.
	pytest
	pytest -m "slow"

.PHONY: fixture
fixture:          ## Regenerate the committed ELF test fixture (needs Nix).
	install -m 644 \
		"$$(nix build --no-link --print-out-paths .#test-fixture)/hello-x86_64.elf" \
		tests/data/hello-x86_64.elf

.PHONY: coverage
coverage:
	coverage run -m pytest

.PHONY: vendor
vendor:             ## Update third-party dependencies.
	copybara copy.bara.sky vendor_pyelftools --folder-dir ./sqlelf/_vendor