aboutsummaryrefslogtreecommitdiffstats
path: root/python/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'python/Makefile')
-rw-r--r--python/Makefile50
1 files changed, 50 insertions, 0 deletions
diff --git a/python/Makefile b/python/Makefile
new file mode 100644
index 0000000..647a3c3
--- /dev/null
+++ b/python/Makefile
@@ -0,0 +1,50 @@
+# Makefile for refcat.
+
+# use .env if present, https://lithic.tech/blog/2020-05/makefile-dot-env
+ifneq (,$(wildcard ./.env))
+ include .env
+ export
+endif
+
+SHELL := /bin/bash
+PY_FILES := $(shell find . -name \*.py -print)
+PKGNAME := refcat
+
+# The "zipapp" we build, cf. PEP441, https://www.python.org/dev/peps/pep-0441/,
+# https://shiv.readthedocs.io/
+ZIPAPP := $(PKGNAME).pyz
+
+# IMPORTANT: Python version on dev and target must match (up to minor version)
+# e.g. for aitio, you might want to use:
+# make refcat.pyz PYTHON_INTERPRETER='"/usr/bin/env python3.7"'
+PYTHON_INTERPRETER := "/usr/bin/env python3.7"
+
+.PHONY: test
+test:
+ pytest -v tests
+
+$(ZIPAPP): $(PY_FILES)
+ # https://shiv.readthedocs.io/en/latest/cli-reference.html
+ # note: use SHIV_ROOT envvar to override expansion dir (e.g. if home is networked)
+ shiv --reproducible --compressed --entry-point refcat.cli:main --python $(PYTHON_INTERPRETER) --output-file $(ZIPAPP) .
+
+.PHONY: deploy
+deploy: $(ZIPAPP)
+ifndef DEPLOY_TARGET
+$(error DEPLOY_TARGET is not set)
+else
+ rsync -avP $^ ${DEPLOY_TARGET}
+endif
+
+.PHONY: fmt
+fmt:
+ yapf -p -i -r $(PKGNAME) tests
+
+.PHONY: clean
+clean:
+ rm -rf .pytest_cache/
+ rm -rf build/
+ rm -rf $(PKGNAME).egg-info/
+ rm -rf $(ZIPAPP)
+ find . -name "__pycache__" -exec rm -rf "{}" +
+