-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathMakefile
129 lines (102 loc) · 2.92 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
SHELL := bash
.ONESHELL:
.PHONY: help clean clean-pyc release dist
# standalone install method
DOCKER_COMPOSE = docker-compose
# support new plugin installation for docker-compose
ifeq (, $(shell which docker-compose))
DOCKER_COMPOSE = docker compose
endif
define BROWSER_PYSCRIPT
import os, webbrowser, sys
try:
from urllib import pathname2url
except:
from urllib.request import pathname2url
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
endef
export BROWSER_PYSCRIPT
define PRINT_HELP_PYSCRIPT
import re, sys
for line in sys.stdin:
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
print("%-20s %s" % (target, help))
endef
export PRINT_HELP_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
export PYTHONPATH
DJANGO_SETTINGS_MODULE ?= testapp.settings
export DJANGO_SETTINGS_MODULE
help:
@echo "clean-build - remove build artifacts"
@echo "clean-pyc - remove Python file artifacts"
@echo "release - package and upload a release"
@echo "dist - package"
@echo "test - run python tests"
@echo "test-with-postgres - run python tests with docker postgres backend"
@echo "tox - run all tests, with existing postgres backend"
@echo "tox-with-postgres - run all tests, with docker postgres backend"
clean: clean-build clean-pyc clean-test
clean-build:
rm -fr build/
rm -fr dist/
rm -fr dist-packages-cache/
rm -fr dist-packages-temp/
rm -fr *.egg-info
rm -fr .eggs
rm -fr .cache
clean-pyc:
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
clean-docs:
$(MAKE) -C docs clean
clean-test: ## remove test and coverage artifacts
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
lint:
flake8 morango
migrations:
python tests/testapp/manage.py makemigrations
test:
python -O -m pytest tests/testapp/tests/
tox:
tox
%-with-postgres:
export PYTHONPATH=./tests/testapp
export DJANGO_SETTINGS_MODULE=testapp.postgres_settings
set -ex
function _on_interrupt() {
# leave off `-v` to skip volume cleanup for debugging error
$(DOCKER_COMPOSE) down
}
trap _on_interrupt SIGINT SIGTERM SIGKILL ERR
$(DOCKER_COMPOSE) up --detach
until $(DOCKER_COMPOSE) logs --tail=1 postgres | grep -q "database system is ready to accept connections"; do
echo "$(date) - waiting for postgres..."
sleep 1
done
$(MAKE) -e $(subst -with-postgres,,$@)
$(DOCKER_COMPOSE) down -v
coverage: ## check code coverage quickly with the default Python
coverage run --source morango setup.py test
coverage report -m
coverage html
$(BROWSER) htmlcov/index.html
docs: clean-docs
$(MAKE) -C docs html
browserdocs: docs
$(BROWSER) docs/_build/html/index.html
docs-autobuild:
sphinx-autobuild docs docs/_build/
release:
ls -l dist/
echo "\nPress enter to upload everything in dist (CTRL+C to exit).\n" && read yes
twine upload -s dist/*
dist: clean
python setup.py sdist --format=gztar
python setup.py bdist_wheel
ls -l dist