.PHONY: clean pip_lock_versions pip_dev dev lint test
.PHONY: docker_up docker_down docker_event docker_restart
.PHONY: ci_unit_lint ci_unit_lint_clean

clean:
	rm -rf env .coverage .pytest_cache .cache coverage.xml pyunit.xml
	find . | grep -E '__pycache__|\.pyc|\.pyo$\' | xargs rm -rf

env:
	../install_local_dependencies.sh -r env

env/bin/flake8 env/bin/py.test pip_dev: | env
	../install_local_dependencies.sh -r dev

lint: | env/bin/flake8
	env/bin/python -m flake8 src tests dev.py

dev: | env/bin/py.test
	env/bin/python dev.py

test: | env/bin/py.test
	env/bin/python -m pytest tests/unit \
		--cov src \
		--cov-report term-missing

pip_lock_versions: clean env
	../install_local_dependencies.sh -r lock

docker_up:
	docker compose up --build -d function

docker_down:
	docker compose down --remove-orphans

docker_event: docker_restart
	curl --request POST \
		--url http://localhost:9000/2015-03-31/functions/function/invocations \
		--header 'Content-Type: application/json' \
		--data '{"audio_fingerprint": "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"}'

docker_restart:
	docker compose restart function
	sleep 0.5  # Give the container time to restart.

ci_unit_lint:
	docker compose run \
		--rm \
		--build \
		--name lambda-content-match-audio-match \
		lint-and-test

ci_unit_lint_clean: docker_down
	docker rm -f lambda-content-match-audio-match
