.PHONY: help

VENV_NAME?=env
PYTHON=${VENV_NAME}/bin/python3
LINT_FILES=linear_regression.py prepare_train_model.py test_model.py

LINEAR_REGRESSION=linear_regression.py
OBJECT_DETECTION=prepare_train_model.py test_model.py

.DEFAULT: help
help:
	@echo "make linear_regression"
	@echo "       runs the simple linear regression example"
	@echo "make objct_detection"
	@ecgo "       runs the object detection example"
	@echo "make env"
	@echo "       creates and prepares the environment"
	@echo "make data"
	@echo "       downloads and unpacks the data"
	@echo "make lint"
	@echo "       runs pylint and mpy"
	@echo "make clean"
	@echo "       cleans the development environment"

data: images
images:
	wget https://s3.us-east-2.amazonaws.com/naturalimages02/images.tar.gz
	tar -xzf images.tar.gz

env: $(VENV_NAME)/bin/activate
$(VENV_NAME)/bin/activate:
	test -d $(VENV_NAME) || python3 -m venv $(VENV_NAME)
	${PYTHON} -m pip install -U pip
	${PYTHON} -m pip install --upgrade tensorflow
	${PYTHON} -m pip install keras
	${PYTHON} -m pip install matplotlib
	${PYTHON} -m pip install keras_vggface
	${PYTHON} -m pip install pylint
	${PYTHON} -m pip install mypy
	touch $(VENV_NAME)/bin/activate

linear_regression: env
	${PYTHON} $(LINEAR_REGRESSION)

object_detection_training: fine_tune.h5
fine_tune.h5:
	${PYTHON} prepare_train_model.py
object_detection: env object_detection_training
	${PYTHON} test_model.py

lint: env
	${PYTHON} -m pylint --rcfile=pylintrc $(LINT_FILES)

clean:
	rm -rf $(VENV_NAME)
	rm -f data.csv
	rm -rf images
	rm -f images.tar.gz
	rm -f fine_tune.h5
	rm -rf .mypy_cache