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
|
# Makefile for easier installation and cleanup.
#
# Uses self-documenting macros from here:
# http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
PACKAGE=fakegit
.PHONY: help
.DEFAULT_GOAL := help
help:
@grep -E '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) |\
awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m\
%s\n", $$1, $$2}'
################
# Installation #
################
.PHONY: install
install: dist ## Install for the current user using the default python command
pip install --user ./dist/*.whl
################
# Distribution #
################
.PHONY: dist
dist: man ## Make Python source distribution
python setup.py build_ext --inplace && \
python setup.py sdist bdist_wheel
###########
# Testing #
###########
.PHONY: test mypy
test: venv ## Run unit tests
source $(VENV_DIR)/bin/activate && green -vv -s 1 -a ./tests
mypy: venv ## Run mypy
source $(VENV_DIR)/bin/activate && \
mypy --check-untyped-defs ./stubs $(PACKAGE)
#################
# Documentation #
#################
.PHONY: man
man: ## Build documentation with Sphinx
python setup.py build_manpages
############
# Clean up #
############
.PHONY: clean
clean: ## Clean build dist and egg directories left after install
rm -rf ./dist
rm -rf ./build
rm -rf ./cover
rm -rf ./$(PACKAGE).egg-info
rm -f MANIFEST
rm -f ./$(PACKAGE)/*.so
rm -f ./*_valgrind.log*
find . -type f -iname '*.pyc' -delete
find . -type d -name '__pycache__' -empty -delete
|