Enable python -m stgit
[stgit.git] / Makefile
blob6729c3126d3ea334cd4df8d58c3c8946dc41ac0c
1 prefix ?= $(HOME)/.local
2 DESTDIR ?= /
3 PYTHON ?= python3
4 DEFAULT_TEST_TARGET ?= test
5 STG_PROVE_OPTS ?=
7 export DESTDIR PYTHON
9 TEST_PATCHES ?= ..
11 all: build
13 build:
14 $(PYTHON) setup.py build
16 dist:
17 $(PYTHON) setup.py sdist
19 install:
20 $(PYTHON) setup.py install --prefix=$(prefix) --root=$(DESTDIR) --force
22 .PHONY: all build dist install
24 doc:
25 $(MAKE) -C Documentation all
27 install-doc:
28 $(MAKE) -C Documentation install
30 install-html:
31 $(MAKE) -C Documentation install-html
33 .PHONY: doc install-doc install-html
35 lint: lint-black lint-isort lint-flake8 lint-t
37 lint-black:
38 $(PYTHON) -m black --check --quiet --diff .
40 lint-isort:
41 $(PYTHON) -m isort --check-only --quiet --diff .
43 lint-flake8:
44 $(PYTHON) -m flake8 .
46 lint-t:
47 $(MAKE) -C t test-lint
49 .PHONY: lint lint-black lint-isort lint-flake8 lint-t
51 format:
52 $(PYTHON) -m black .
53 $(PYTHON) -m isort --quiet .
55 test: build
56 $(MAKE) -C t all
58 test-patches:
59 for patch in $$($(PYTHON) -m stgit.main series --noprefix $(TEST_PATCHES)); do \
60 $(PYTHON) -m stgit.main goto $$patch && $(MAKE) test || break; \
61 done
63 .PHONY: format test test-patches
65 coverage:
66 $(MAKE) coverage-test
67 $(MAKE) coverage-report
69 coverage-test:
70 rm -f .coverage
71 $(MAKE) .coverage
73 .coverage:
74 rm -rf build
75 -mkdir .cov-files
76 COVERAGE_FILE=$(CURDIR)/.cov-files/.coverage \
77 $(PYTHON) -m coverage run --context=setup setup.py build
78 COVERAGE_PROCESS_START=$(CURDIR)/pyproject.toml \
79 COVERAGE_FILE=$(CURDIR)/.cov-files/.coverage \
80 $(MAKE) -C t all
81 COVERAGE_PROCESS_START=$(CURDIR)/pyproject.toml \
82 COVERAGE_FILE=$(CURDIR)/.cov-files/.coverage \
83 $(MAKE) -C Documentation build-txt
84 $(PYTHON) -m coverage combine .cov-files/.coverage.*
85 rm -r .cov-files
87 coverage-report: .coverage
88 $(PYTHON) -m coverage html
89 $(PYTHON) -m coverage report
90 @echo "HTML coverage report: file://$(CURDIR)/htmlcov/index.html"
92 .PHONY: coverage coverage-test coverage-report
94 dev-env:
95 $(PYTHON) -m pip install -U pip
96 $(PYTHON) -m pip install coverage[toml] black flake8 flake8-bugbear isort
97 .PHONY: dev-env
99 clean:
100 for dir in Documentation t; do \
101 $(MAKE) -C $$dir clean; \
102 done
103 rm -rf build
104 rm -rf dist
105 rm -f stgit/*.pyc
106 rm -rf stgit/__pycache__
107 rm -f stgit/builtin_version.py
108 rm -f stgit/commands/*.pyc
109 rm -rf stgit/commands/__pycache__
110 rm -f stgit/commands/cmdlist.py
111 rm -f stgit/completion/*.pyc
112 rm -rf stgit/completion/__pycache__
113 rm -f stgit/lib/*.pyc
114 rm -rf stgit/lib/__pycache__
115 rm -f stgit/lib/git/*.pyc
116 rm -rf stgit/lib/git/__pycache__
117 rm -f TAGS tags
118 rm -f MANIFEST
119 rm -f completion/stg.fish
120 rm -f completion/stgit.bash
121 rm -f .coverage
122 rm -rf .cov-files
123 rm -rf htmlcov
125 tags:
126 ctags -R stgit/*
128 TAGS:
129 ctags -e -R stgit/*
131 .PHONY: clean tags TAGS