3
3
# Here is what you can do:
4
4
#
5
5
# - make all # Automatically build an html local version
6
- # - make build # To build a single .po file
6
+ # - make build <po-file> # To build a single .po file
7
7
# - make todo # To list remaining tasks
8
8
# - make merge # To merge pot from upstream
9
9
# - make fuzzy # To find fuzzy strings
@@ -37,25 +37,23 @@ print('\n'.join(output))
37
37
endef
38
38
export PRINT_HELP_PYSCRIPT # End of python section
39
39
40
- CPYTHON_CLONE := ../cpython/
40
+ CPYTHON_CLONE := ../cpython
41
+ VERSION := $(or $(VERSION ) , 3.12)
41
42
SPHINX_CONF := $(CPYTHON_CLONE ) /Doc/conf.py
42
43
LANGUAGE := zh_TW
43
44
LC_MESSAGES := $(CPYTHON_CLONE ) /Doc/locales/$(LANGUAGE ) /LC_MESSAGES
44
45
VENV := ~/.venvs/python-docs-i18n/
45
- PYTHON := $(shell which python3)
46
46
MODE := autobuild-dev-html
47
- BRANCH := $(or $(VERSION ) , $(shell git describe --contains --all HEAD) )
48
47
JOBS := 4
49
48
50
49
.PHONY : all
51
- all : $(VENV ) /bin/sphinx-build $(VENV ) /bin/blurb clone # # Automatically build an html local version
52
- mkdir -p $(LC_MESSAGES )
50
+ all : prepare_deps # # Automatically build an html local version
53
51
for dirname in $$ (find . -name ' *.po' | xargs -n1 dirname | sort -u | grep -v ' ^\.$$' ); do mkdir -p $( LC_MESSAGES) /$$ dirname; done
54
52
for file in * .po * /* .po; do ln -f $$ file $( LC_MESSAGES) /$$ file; done
55
53
. $(VENV ) /bin/activate; $(MAKE ) -C $(CPYTHON_CLONE ) /Doc/ SPHINXOPTS=' -j$(JOBS) -D locale_dirs=locales -D language=$(LANGUAGE) -D gettext_compact=0' $(MODE )
56
54
57
55
.PHONY : build
58
- build : $( VENV ) /bin/sphinx-build $( VENV ) /bin/blurb clone # # Automatically build an html local version
56
+ build : prepare_deps # # Automatically build an html local version for a single file
59
57
@$(eval target=$(filter-out $@ ,$(MAKECMDGOALS ) ) )
60
58
@if [ -z $( target) ]; then \
61
59
echo " \x1B[1;31m" " Please provide a file argument." " \x1B[m" ; \
@@ -69,32 +67,29 @@ build: $(VENV)/bin/sphinx-build $(VENV)/bin/blurb clone ## Automatically build a
69
67
echo " \x1B[1;31m" " ERROR: $( target) not exist." " \x1B[m" ; \
70
68
exit 1; \
71
69
fi
72
- @mkdir -p $( LC_MESSAGES )
70
+
73
71
@$(eval dir=`echo $(target) | xargs -n1 dirname`) # # Get dir
74
- # If the build target is in under directory
75
- # We should make direcotry in $(LC_MESSAGES) and link the file.
76
- @if [ $(dir) != "." ]; then \
77
- echo "mkdir -p $(LC_MESSAGES)/$(dir)"; \
78
- mkdir -p $(LC_MESSAGES)/$(dir); \
79
- echo "ln -f ./$(target) $(LC_MESSAGES)/$(target)"; \
80
- ln -f ./$(target) $(LC_MESSAGES)/$(target); \
81
- fi
82
- # Build
83
- @echo "----"
72
+ @mkdir -p $(LC_MESSAGES)/$(dir)
73
+ @ln -f ./$(target) $(LC_MESSAGES)/$(target)
74
+
84
75
@. $(VENV)/bin/activate; $(MAKE) -C $(CPYTHON_CLONE)/Doc/ SPHINXOPTS='-j$(JOBS) -D language=$(LANGUAGE) -D locale_dirs=locales -D gettext_compact=0' SOURCES='$(basename $(target)).rst' html
85
76
77
+
86
78
help :
87
79
@python3 -c " $$ PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST )
88
80
89
- clone : # # Clone latest cpython repository to `../cpython/` if it doesn't exist
81
+ .PHONY : prepare_deps
82
+ prepare_deps : $(VENV ) /bin/sphinx-build $(VENV ) /bin/blurb upgrade_venv prepare_cpython # # Prepare dependencies
83
+
84
+ .PHONY : prepare_cpython
85
+ prepare_cpython : # # Prepare CPython clone at `../cpython/`.
90
86
git clone --depth 1 --no-single-branch https://github.com/python/cpython.git $(CPYTHON_CLONE ) || echo " cpython exists"
91
- cd $(CPYTHON_CLONE ) && git checkout $(BRANCH )
87
+ cd $(CPYTHON_CLONE ) && git checkout $(VERSION ) && git pull origin $(VERSION )
88
+ mkdir -p $(LC_MESSAGES )
92
89
93
90
94
91
$(VENV ) /bin/activate :
95
- mkdir -p $(VENV )
96
- $(PYTHON ) -m venv $(VENV )
97
-
92
+ python3 -m venv $(VENV )
98
93
99
94
$(VENV ) /bin/sphinx-build : $(VENV ) /bin/activate
100
95
. $(VENV ) /bin/activate; python3 -m pip install sphinx python-docs-theme
@@ -108,7 +103,7 @@ $(VENV)/bin/blurb: $(VENV)/bin/activate
108
103
109
104
.PHONY : upgrade_venv
110
105
upgrade_venv : $(VENV ) /bin/activate # # Upgrade the venv that compiles the doc
111
- . $(VENV ) /bin/activate; python3 -m pip install --upgrade sphinx python-docs-theme blurb sphinx-lint
106
+ @ . $(VENV ) /bin/activate; python3 -m pip install -q --upgrade sphinx python-docs-theme blurb sphinx-lint
112
107
113
108
114
109
.PHONY : progress
@@ -124,10 +119,7 @@ todo: ## List remaining tasks
124
119
125
120
126
121
.PHONY : merge
127
- merge : upgrade_venv # # To merge pot from upstream
128
- ifneq "$(shell cd $(CPYTHON_CLONE ) 2>/dev/null && git describe --contains --all HEAD) " "$(BRANCH ) "
129
- $(error "You're merging from a different branch")
130
- endif
122
+ merge : prepare_deps # # To merge pot from upstream
131
123
(cd $( CPYTHON_CLONE) /Doc; rm -f build/NEWS)
132
124
(cd $( CPYTHON_CLONE) /Doc; $( VENV) /bin/sphinx-build -Q -b gettext -D gettext_compact=0 . locales/pot/)
133
125
find $(CPYTHON_CLONE ) /Doc/locales/pot/ -name ' *.pot' | \
@@ -146,7 +138,7 @@ endif
146
138
147
139
.PHONY : update_txconfig
148
140
update_txconfig :
149
- curl -L https://rawgit.com/python-doc-ja/cpython-doc-catalog/catalog-$(BRANCH ) /Doc/locales/.tx/config | \
141
+ curl -L https://rawgit.com/python-doc-ja/cpython-doc-catalog/catalog-$(VERSION ) /Doc/locales/.tx/config | \
150
142
grep --invert-match ' ^file_filter = *' | \
151
143
sed -e ' s/source_file = pot\/\(.*\)\.pot/trans.zh_TW = \1.po/' | \
152
144
sed -n ' w .tx/config'
0 commit comments