-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
93 lines (67 loc) · 3.37 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
PROJ_ROOT=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
PYTHON_EXEC?=python
COMPOSE_EXEC?=docker compose
DOCKER_EXEC?=docker
GIT_EXEC?=git
IMAGE_NAME?=paccakkha/suttacentral
IMAGE_TARGET?=production
IMAGE_VERSION?=suttapublisher_$(IMAGE_TARGET)
APP_PATH?=sutta_publisher/src
TESTS_PATH?=sutta_publisher/tests
PROD_DOCKER_COMPOSE?=./docker-compose.yml
DEV_DOCKER_COMPOSE?=./docker-compose.dev.yml
LINT_PATHS?=$(APP_PATH) $(TESTS_PATH)
PUBLICATIONS_LIST?=scpub2 scpub7 scpub16 scpub17 scpub1 scpub6 scpub18 scpub3 scpub4 scpub5 scpub8
##############################################################################
### Run app
###########
run:
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) run publisher python sutta_publisher $(filter-out $@,$(MAKECMDGOALS))
run-dev:
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) -f $(DEV_DOCKER_COMPOSE) run publisher python sutta_publisher $(filter-out $@,$(MAKECMDGOALS))
run-dev-all:
for publication in $(PUBLICATIONS_LIST) ; do \
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) -f $(DEV_DOCKER_COMPOSE) run publisher python sutta_publisher $(filter-out $@,$(MAKECMDGOALS)) $$publication; \
done
run-debug:
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) -f $(DEV_DOCKER_COMPOSE) run publisher python -m debugpy --wait-for-client --listen 0.0.0.0:5678 sutta_publisher $(filter-out $@,$(MAKECMDGOALS))
run-command:
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) -f $(DEV_DOCKER_COMPOSE) run publisher $(filter-out $@,$(MAKECMDGOALS))
run-bash:
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) -f $(DEV_DOCKER_COMPOSE) run publisher bash
build:
cd $(APP_PATH)/.. ; $(DOCKER_EXEC) build -t=$(IMAGE_NAME):$(IMAGE_VERSION) --target=$(IMAGE_TARGET) -f=Dockerfile ./
push-docker-image:
$(DOCKER_EXEC) push $(IMAGE_NAME):$(IMAGE_VERSION)
clean:
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) rm -fsv
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) -f $(DEV_DOCKER_COMPOSE) rm -fsv
##############################################################################
### Testing
###########
test:
$(COMPOSE_EXEC) -f $(PROD_DOCKER_COMPOSE) -f $(DEV_DOCKER_COMPOSE) run publisher pytest /tests
# TODO: [67] Reimplement using already defined `make lint` job and **in container**
test-ci: test
##############################################################################
### Dependency & linting
########################
lint:
$(PYTHON_EXEC) -W ignore -m autoflake --in-place --recursive --ignore-init-module-imports --remove-duplicate-keys --remove-unused-variables --remove-all-unused-imports $(LINT_PATHS)
$(PYTHON_EXEC) -m black $(LINT_PATHS)
$(PYTHON_EXEC) -m isort $(LINT_PATHS)
$(PYTHON_EXEC) -m mypy $(APP_PATH)
$(PYTHON_EXEC) -m bandit -r $(APP_PATH)
compile-deps:
$(PYTHON_EXEC) -m piptools compile --no-annotate --no-header --generate-hashes "${PROJ_ROOT}/sutta_publisher/dev.in"
$(PYTHON_EXEC) -m piptools compile --no-annotate --no-header --generate-hashes "${PROJ_ROOT}/sutta_publisher/prod.in"
recompile-deps:
$(PYTHON_EXEC) -m piptools compile --no-annotate --no-header --generate-hashes --upgrade "${PROJ_ROOT}/sutta_publisher/dev.in"
$(PYTHON_EXEC) -m piptools compile --no-annotate --no-header --generate-hashes --upgrade "${PROJ_ROOT}/sutta_publisher/prod.in"
sync-deps:
$(PYTHON_EXEC) -m piptools help >/dev/null 2>&1 || $(PYTHON_EXEC) -m pip install pip-tools
$(PYTHON_EXEC) -m piptools sync "${PROJ_ROOT}/sutta_publisher/dev.txt"
$(PYTHON_EXEC) -m pip install -e .
# Silent unused rules
%:
@: