# Add any tasks that are not dependent on files to the .PHONY list.
.PHONY: lint test clean dev_env unit_lint_job

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

dev_env: env;
	if [ ! -f env/bin/py.test ]; then env/bin/pip install -q -I -r requirements.txt -r requirements-dev.txt; fi

env:
	python3.8 -m venv env
	env/bin/pip install -q -U pip setuptools wheel
	env/bin/pip install -q -I -r requirements.txt

lint: dev_env
	env/bin/python -m flake8 \
		*.py \
		abacus_etl_tools/ \
		tests/

local_install:
	python3.8 -m venv env
	env/bin/python setup.py install

generate_whl: dev_env
	env/bin/python setup.py bdist_wheel

generate_tar_gz: dev_env
	env/bin/python setup.py sdist

test: dev_env
	env/bin/python -m pytest tests/ -s \
		--cov abacus_etl_tools \
		--cov-report term-missing

test_unit: dev_env
	env/bin/python -m pytest tests/unit \
		--cov abacus_etl_tools tests/unit \
		--cov-report xml \
		--junitxml=pyunit.xml

unit_lint_job: clean lint test_unit
