BIN=venv/bin

help:  		## Show automatically generated help
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'


venv/touchfile:
	@echo "---- Creating virtualenv in venv ---- "
	@test -d venv || virtualenv -p python3.10 venv
	@$(BIN)/pip install -U pip black -r requirements.txt
	@touch venv/touchfile # thanks to that we do not recreate the venv each time
v_env: venv/touchfile


./tmp_database.sqlite: v_env
	@$(BIN)/python -c "from project import db, create_app; db.create_all(app=create_app())"
init_db: tmp_database.sqlite


format: v_env  		## Format source code with black
	@$(BIN)/black -l 100 project/

install: v_env

run: init_db		## Run the application locally
	FLASK_APP=project; FLASK_DEBUG=1; $(BIN)/flask run

clean:				## Remove virtualenv and a database
	@rm -rvf venv ./tmp_database.sqlite
