/
Makefile.pymodule
114 lines (87 loc) · 4.05 KB
/
Makefile.pymodule
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
# -----------------------------------------------------------------------------
# PYTHON PROJECT MAKEFILE
# -----------------------------------------------------------------------------
# Updated: 2016-12-01
# Created: 2016-08-16
# License: Revised BSD license
# -----------------------------------------------------------------------------
MODULE ?=$(PROJECT)
VERSION ?=$(shell grep __version__ src/$(MODULE)/*.py | cut -d '=' -f2 | xargs echo)
# === SOURCES =================================================================
SOURCES_PY ?=$(wildcard src/*.py) $(wildcard src/*/*.py) $(wildcard src/*/*/*.py) $(wildcard setup.py)
SOURCES_BIN ?=$(wildcard bin/*)
SOURCES_TXTO ?=$(wildcard doc/*.txto)
SOURCES_MD ?=$(wildcard *.md doc/*.md)
SOURCES_EXTRA ?=
SOURCES_ALL ?=$(SOURCES_PY) $(SOURCES_TXTO) $(SOURCES_MD) $(SOURCES_EXTRA)
# === BUILD ===================================================================
BUILD_EXTRA ?=
BUILD_ALL ?=MANIFEST $(wildcard setup.py) $(BUILD_EXTRA)
CLEAN_ALL ?=$(filter-out setup.py,$(BUILD_ALL))
# === DIST ====================================================================
# === GIT =====================================================================
GIT_RELEASE_PUSH = gh
DIST_EXTRA ?=
DIST_ALL ?= $(SOURCES_PY) $(SOURCES_MD) $(SOURCES_BIN) $(DIST_EXTRA)
# === HELPERS =================================================================
OS = `uname -s | tr A-Z a-z`
TIMESTAMP :=$(shell date +'%F')
BUILD_ID :=$(shell git rev-parse --verify HEAD)
MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_PATH))))
YELLOW =`tput setaf 11`
GREEN =`tput setaf 10`
BLUE =`tput setaf 12`
CYAN =`tput setaf 14`
RED =`tput setaf 1`
GRAY =`tput setaf 7`
RESET =`tput sgr0`
.PHONY: all doc clean check test
# -----------------------------------------------------------------------------
#
#
# MAIN RULES
#
# -----------------------------------------------------------------------------
build: $(BUILD_ALL) ## Builds all the project assets
dist: $(DIST_ALL) $(BUILD_ALL) ## Updates the distribution of the project
@echo "$(CYAN)📦 dist: $(words $(DIST_ALL)) files $(RESET)"
@echo "$(BLUE) $(DIST_ALL)$(RESET)"
python setup.py clean sdist
help: ## Displays a description of the different Makefile rules
@echo "$(CYAN)★★★ $(PROJECT) Makefile ★★★$(RESET)"
@grep -E -o '((\w|-)+):[^#]+(##.*)$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":|##"}; {printf "make \033[01;32m%-15s\033[0m🕮 %s\n", $$1, $$3}'
clean: ## Cleans the build files
@echo "$(GREEN)♻ clean: Cleaning $(words $(CLEAN_ALL)) files $(RESET)"
@echo "$(BLUE)♻ $(CLEAN_ALL) $(RESET)"
@test -n "$(CLEAN_ALL)" && (echo $(CLEAN_ALL) | xargs -n1 rm 2> /dev/null) ; true
@test -n "$(BUILD_PATH)" -a -e "$(BUILD_PATH)" && rm -r $(BUILD_PATH) ; true
release: $(PRODUCT) ## Commits, tags, pushes to Git, registers and uploads on PyPI
@echo "$(CYAN)📦 releasing $(VERSION)$(RESET)"
git commit -a -m "Release $(VERSION)" ; true
git tag $(VERSION) ; true
git push $(GIT_RELEASE_PUSH) --all ; true
python setup.py clean sdist register upload
check: ## Runs pychecker on the Python sources
@echo "$(CYAN)🔧 checking: $(MODULE)$(RESET)"
export PYTHONPATH=src && pychecker $(MODULE)
# -----------------------------------------------------------------------------
#
# BUILD FILES
#
# -----------------------------------------------------------------------------
MANIFEST: $(DIST_ALL) $(wildcard Makefile*)
@echo "$(GREEN)📝 $@ [MANIFEST]$(RESET)"
@echo $(DIST_ALL) | xargs -n1 | sort | uniq > $@
setup.py: $(filter-out setup.py,$(SOURCES_PY))
@echo "$(GREEN)📝 $@ [VERSION $(VERSION)]$(RESET)"
@sed -i 's/VERSION \+= *"[^"]\+"/VERSION = "$(VERSION)"/' setup.py
# -----------------------------------------------------------------------------
#
# HELPERS
#
# -----------------------------------------------------------------------------
print-%:
@echo $*=$($*) | xargs -n1 echo
FORCE:
#EOF