11PROJECT_NAME := $(shell basename $CURDIR)
2- VIRTUAL_ENVIRONMENT := $(CURDIR ) /.venv
3- LOCAL_PYTHON := $(VIRTUAL_ENVIRONMENT ) /bin/python3
2+ VIRTUAL_ENV := $(CURDIR ) /.venv
3+ LOCAL_PYTHON := $(VIRTUAL_ENV ) /bin/python3
44
55define HELP
66Manage $(PROJECT_NAME ) . Usage:
77
8- make run - Run $(PROJECT_NAME ) .
9- make install - Create virtual env, install dependencies, and run project .
10- make deploy - Install and run script by running `make install` and `make run` in succession .
11- make update - Update pip dependencies via Poetry and export output to requirements.txt.
12- make format - Format code with Pythons `Black` library .
13- make lint - Check code formatting with ` flake8` .
14- make clean - Remove cached files and lock files .
8+ make run - Run $(PROJECT_NAME ) locally .
9+ make install - Create local virtualenv & install dependencies.
10+ make deploy - Set up project & run locally .
11+ make update - Update dependencies via Poetry and output resulting ` requirements.txt` .
12+ make format - Run Python code formatter & sort dependencies .
13+ make lint - Check code formatting with flake8.
14+ make clean - Remove extraneous compiled files, caches, logs, etc .
1515
1616endef
1717export HELP
1818
1919
2020.PHONY : run install deploy update format lint clean help
2121
22- requirements : .requirements.txt
23- env : ./.venv/bin/activate
2422
23+ all help :
24+ @echo " $$ HELP"
2525
26- .requirements.txt : requirements.txt
27- $(shell . .venv/bin/activate && pip install -r requirements.txt)
2826
27+ env : $(VIRTUAL_ENV )
2928
30- all help :
31- @echo " $$ HELP"
29+
30+ $(VIRTUAL_ENV ) :
31+ if [ ! -d $( VIRTUAL_ENV) ]; then \
32+ echo " Creating Python virtual env in \` ${VIRTUAL_ENV} \` " ; \
33+ python3 -m venv $(VIRTUAL_ENV ) ; \
34+ fi
3235
3336
3437.PHONY : run
3538run : env
36- flask run
39+ export LESS_BIN=$(shell which lessc)
40+ uwsgi --http 127.0.0.1:8082 --master --module wsgi:app --processes 4 --threads 2
3741
3842
3943.PHONY : install
40- install :
41- if [ ! -d " ./.venv" ]; then python3 -m venv $( VIRTUAL_ENVIRONMENT) ; fi
42- . .venv/bin/activate
43- $(LOCAL_PYTHON ) -m pip install --upgrade pip setuptools wheel
44- $(LOCAL_PYTHON ) -m pip install -r requirements.txt
44+ install : env
45+ $(LOCAL_PYTHON ) -m pip install --upgrade pip setuptools wheel && \
46+ $(LOCAL_PYTHON ) -m pip install --no-cache-dir uwsgi && \
47+ $(LOCAL_PYTHON ) -m pip install -r requirements.txt && \
48+ npm i -g less && \
49+ echo Installed dependencies in \` ${VIRTUAL_ENV} \` ;
4550
4651
4752.PHONY : deploy
@@ -50,40 +55,55 @@ deploy:
5055 make run
5156
5257
58+ .PHONY : test
59+ test : env
60+ $(LOCAL_PYTHON ) -m \
61+ coverage run -m pytest -vv \
62+ --disable-pytest-warnings && \
63+ coverage html --title=' Coverage Report' -d .reports && \
64+ open .reports/index.html
65+
66+
5367.PHONY : update
54- update :
55- if [ ! -d " ./.venv" ]; then python3 -m venv $( VIRTUAL_ENVIRONMENT) ; fi
56- .venv/bin/python3 -m pip install --upgrade pip setuptools wheel
57- poetry update
58- poetry export -f requirements.txt --output requirements.txt --without-hashes
68+ update : env
69+ $(LOCAL_PYTHON ) -m pip install --upgrade pip setuptools wheel && \
70+ $(LOCAL_PYTHON ) -m pip install --no-cache-dir uwsgi && \
71+ poetry update && \
72+ poetry export -f requirements.txt --output requirements.txt --without-hashes && \
73+ echo Installed dependencies in \` ${VIRTUAL_ENV} \` ;
5974
6075
6176.PHONY : format
6277format : env
63- isort --multi-line=3 .
64- black .
78+ $( LOCAL_PYTHON ) -m isort --multi-line=3 .
79+ $( LOCAL_PYTHON ) -m black .
6580
6681
6782.PHONY : lint
68- lint :
69- flake8 . --count \
83+ lint : env
84+ $( LOCAL_PYTHON ) -m flake8 . --count \
7085 --select=E9,F63,F7,F82 \
71- --exclude .git,.github,__pycache__,.pytest_cache,.venv,logs,creds,.venv,docs,logs \
86+ --exclude .git,.github,__pycache__,.pytest_cache,.venv,logs,creds,.venv,docs,logs,.reports \
7287 --show-source \
7388 --statistics
7489
7590
7691.PHONY : clean
7792clean :
78- find . -name ' *.pyc' -delete
79- find . -name ' __pycache__' -delete
80- find . -name ' poetry.lock' -delete
81- find . -name ' *.log' -delete
82- find . -name ' .DS_Store' -delete
83- find . -wholename ' logs/*.json' -delete
84- find . -wholename ' .pytest_cache' -delete
85- find . -wholename ' **/.pytest_cache' -delete
86- find . -wholename ' ./logs/*.json' -delete
87- find . -wholename ' ./logs' -delete
88- find . -wholename ' *.html' -delete
89- find . -wholename ' **/.webassets-cache' -delete
93+ find . -name ' poetry.lock' -delete && \
94+ find . -name ' .coverage' -delete && \
95+ find . -name ' *.pyc' -delete \
96+ find . -name ' __pycache__' -delete \
97+ find . -name ' poetry.lock' -delete \
98+ find . -name ' *.log' -delete \
99+ find . -name ' .DS_Store' -delete \
100+ find . -wholename ' **/*.pyc' -delete && \
101+ find . -wholename ' *.html' -delete && \
102+ find . -type d -wholename ' __pycache__' -exec rm -rf {} + && \
103+ find . -type d -wholename ' .venv' -exec rm -rf {} + && \
104+ find . -type d -wholename ' .pytest_cache' -exec rm -rf {} + && \
105+ find . -type d -wholename ' **/.pytest_cache' -exec rm -rf {} + && \
106+ find . -type d -wholename ' ./logs/*' -exec rm -rf {} + && \
107+ find . -type d -wholename ' ./.reports/*' -exec rm -rf {} + && \
108+ find . -type d -wholename ' **/.webassets-cache' -exec rm -rf {} +
109+
0 commit comments