-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
120 lines (93 loc) · 3.03 KB
/
Makefile
File metadata and controls
120 lines (93 loc) · 3.03 KB
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
115
116
117
118
119
120
ifneq (,$(findstring /tpl, $(CURDIR)))
$(error [fail] please cd to "doc" or "web" dir before running make)
endif
MKDOCS_LANG ?= zh
MKDOCS_YML := mkdocs_$(MKDOCS_LANG).yml
PY_VENV_DIR := .venv
PY_ACTIVATE := $(PY_VENV_DIR)/bin/activate
PY_REQUIREMENTS := tpl/pkg/requirements.txt
NODE_MODULES := ./node_modules
FILE_TAILWIND := tailwind
FILE_TAILWIND_INT := tpl/theme/assets/stylesheets/$(FILE_TAILWIND).css
FILE_TAILWIND_MIN := tpl/theme/assets/stylesheets/$(FILE_TAILWIND).min.css
FILE_HTML := $(shell find ./src -name "*.html" 2>/dev/null || true)
DOC_SITE := $(READTHEDOCS_OUTPUT)html
WEB_SITE := ./site
.PHONY: check-venv \
check-node \
serve-doc \
serve-web \
build-doc \
build-web \
gen-doc \
gen-web \
gen-news \
gen-css \
gen-webp \
clean \
clean-link \
clean-venv \
clean-node \
clean-gen \
clean-site \
.PHONY: $(filter check-%, $(MAKECMDGOALS))
$(PY_VENV_DIR)/bin/python:
@echo "[init] creating virtual environment..."
python3 -m venv $(PY_VENV_DIR)
@echo "[init] installing requirements..."
. $(PY_ACTIVATE) && pip install -r $(PY_REQUIREMENTS)
$(NODE_MODULES):
@echo "[init] installing nodejs packages..."
npm install tailwindcss@4.2.2 @tailwindcss/cli@4.2.2 sharp@0.34.5 --save-exact
npm pkg set type=module
check-venv: $(PY_VENV_DIR)/bin/python
check-node: $(NODE_MODULES)
serve-doc: check-venv gen-doc
@echo "[serve] starting MkDocs server..."
. $(PY_ACTIVATE) && mkdocs serve -f $(MKDOCS_YML)
serve-web: check-venv gen-web
@echo "[serve] starting MkDocs server..."
. $(PY_ACTIVATE) && mkdocs serve -f $(MKDOCS_YML)
build-doc: check-venv
@echo "[build] building documentation..."
. $(PY_ACTIVATE) && mkdocs build -f $(MKDOCS_YML) --site-dir $(DOC_SITE)
build-web: check-venv
@echo "[build] building documentation..."
. $(PY_ACTIVATE) && mkdocs build -f $(MKDOCS_YML)
gen-doc: gen-css gen-webp
gen-web: gen-news gen-css gen-webp
gen-news: check-venv
@echo "[gen] generating news html..."
. $(PY_ACTIVATE) && python3 tpl/script/generate_news_html.py
gen-css: check-node
@echo "[gen] generating tailwind css..."
npx @tailwindcss/cli -i $(FILE_TAILWIND_INT) -o $(FILE_TAILWIND_MIN) -m
gen-webp:
@echo "[gen] generating webp images..."
node tpl/script/compress_image.js ./res
clean: clean-venv clean-node clean-gen clean-site
clean-link:
@echo "[clean] deleting softlink..."
@for target in $(LINK_TARGET); do \
if [ -d "$$target/res" ]; then \
rm -rf $$target/res; \
fi; \
done
@echo "[clean] done!"
clean-venv:
@echo "[clean] deleting virtual environment..."
rm -rf .venv
@echo "[clean] done!"
clean-node:
@echo "[clean] deleting nodejs packages..."
rm -rf $(NODE_MODULES)
rm -f package.json package-lock.json
@echo "[clean] done!"
clean-gen:
@echo "[clean] deleting dynamic files..."
rm -f $(FILE_HTML) $(FILE_TAILWIND_MIN)
@echo "[clean] done!"
clean-site:
@echo "[clean] deleting site..."
rm -rf site
@echo "[clean] done!"