IMAGE_NAME ?= spacy-accelerate-bench
ARTIFACTS_DIR ?= $(CURDIR)/artifacts/benchmarks/docker
DOCKERFILE ?= benchmarks/docker/Dockerfile
MODELS ?=
BENCHMARK_ARGS ?=
PYTHON ?= .venv/bin/python
TEST_PYPI_REPOSITORY_URL ?= https://test.pypi.org/legacy/

.PHONY: build benchmark benchmark-full benchmark-ner-only run docker-build docker-benchmark docker-benchmark-full docker-benchmark-ner-only docker-benchmark-shell package package-check publish-testpypi

docker-build:
	docker build -f $(DOCKERFILE) -t $(IMAGE_NAME) .

docker-benchmark:
	mkdir -p $(ARTIFACTS_DIR)
	docker run --rm --gpus all \
		-v "$(ARTIFACTS_DIR):/artifacts" \
		$(IMAGE_NAME) \
		$(if $(strip $(MODELS)),--models $(MODELS),) \
		$(BENCHMARK_ARGS)

docker-benchmark-full:
	$(MAKE) docker-benchmark BENCHMARK_ARGS="$(BENCHMARK_ARGS)"

docker-benchmark-ner-only:
	$(MAKE) docker-benchmark BENCHMARK_ARGS="--ner-only $(BENCHMARK_ARGS)"

docker-benchmark-shell:
	mkdir -p $(ARTIFACTS_DIR)
	docker run --rm -it --gpus all --entrypoint bash \
		-v "$(ARTIFACTS_DIR):/artifacts" \
		$(IMAGE_NAME)

build: docker-build

benchmark: docker-benchmark-full

benchmark-full: docker-benchmark-full

benchmark-ner-only: docker-benchmark-ner-only

run: docker-benchmark-full

package:
	rm -rf dist/
	$(PYTHON) -m build

package-check: package
	$(PYTHON) -m twine check dist/*

publish-testpypi: package-check
	$(PYTHON) -m twine upload --repository-url $(TEST_PYPI_REPOSITORY_URL) dist/*
