/
Makefile
111 lines (75 loc) · 2.7 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
# Manage package tasks
# -----------------------------------
# make pkg -> build the package
# make unit -> perform unit tests
# make install -> install the package in a virtualenv
# make uninstall -> uninstall the package from the virtualenv
# Package name
NAME := pii-extract-base
# Virtualenv to install in. In this order:
# 1. the one given by the VENV environment variable
# 2. an active one (as given by the VIRTUAL_ENV environment variable)
# 3. a default
VENV ?= $(shell echo $${VIRTUAL_ENV:-/opt/venv/pii})
PYTHON ?= python3.8
VENV_PYTHON ?= $(VENV)/bin/python3
# --------------------------------------------------------------------------
# Package version: taken from the __init__.py file
VERSION_FILE := src/pii_extract/__init__.py
VERSION := $(shell grep "^VERSION" $(VERSION_FILE) | sed -r "s/VERSION = \"(.*)\"/\1/")
PKGFILE := dist/$(NAME)-$(VERSION).tar.gz
# --------------------------------------------------------------------------
all:
@echo "VERSION = $(VERSION)"
@echo "use 'make pkg' to build the package"
build pkg: $(PKGFILE)
clean:
rm -f "$(PKGFILE)"
rebuild: clean build
version:
@echo "$(VERSION)"
backup: version
tar cvjf $(NAME)-$(VERSION).tgz \
--exclude=__pycache__ --exclude=pii_extract.egg-info \
doc src test \
CHANGES.txt LICENSE README.md \
Makefile MANIFEST.in requirements.txt setup.py
@echo "** Created $(NAME)-$(VERSION).tgz"
# --------------------------------------------------------------------------
TEST ?= test/unit
venv: $(VENV)
pytest: $(VENV)/bin/pytest
unit: venv pytest
PYTHONPATH=src:test $(VENV)/bin/pytest $(ARGS) $(TEST)
unit-verbose: venv pytest
PYTHONPATH=src:test \
$(VENV)/bin/pytest -vv --capture=no $(ARGS) $(TEST)
unit-full: venv pytest
PYTHONPATH=src:test:../pii-data/src \
$(VENV)/bin/pytest -vv --capture=no $(ARGS) $(TEST)
# --------------------------------------------------------------------------
$(PKGFILE): $(VERSION_FILE) setup.py
$(VENV_PYTHON) setup.py sdist
install: $(PKGFILE) venv
$(VENV)/bin/pip install $(PKGFILE)
uninstall:
$(VENV)/bin/pip uninstall -y $(NAME)
reinstall: uninstall clean pkg install
$(VENV):
BASE=$$(basename "$@"); test -d "$$BASE" || mkdir -p "$$BASE"
$(PYTHON) -m venv $@
$@/bin/pip install --upgrade pip
$@/bin/pip install wheel
$@/bin/pip install -r requirements.txt
$(VENV)/bin/pytest:
$(VENV)/bin/pip install pytest
# -----------------------------------------------------------------------
TWINE := $(VENV)/bin/twine
$(TWINE):
$(VENV)/bin/pip install twine
upload-check: $(PKGFILE) $(TWINE)
$(TWINE) check $(PKGFILE)
upload-test: $(PKGFILE) $(TWINE)
$(TWINE) upload --repository pypitest $(PKGFILE)
upload: $(PKGFILE) $(TWINE)
$(TWINE) upload $(PKGFILE)