33# Here is what you can do:
44#
55# - 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
77# - make todo # To list remaining tasks
88# - make merge # To merge pot from upstream
99# - make fuzzy # To find fuzzy strings
@@ -37,25 +37,23 @@ print('\n'.join(output))
3737endef
3838export PRINT_HELP_PYSCRIPT # End of python section
3939
40- CPYTHON_CLONE := ../cpython/
40+ CPYTHON_CLONE := ../cpython
41+ VERSION :=$(or $(VERSION ) , 3.12)
4142SPHINX_CONF :=$(CPYTHON_CLONE ) /Doc/conf.py
4243LANGUAGE := zh_TW
4344LC_MESSAGES :=$(CPYTHON_CLONE ) /Doc/locales/$(LANGUAGE ) /LC_MESSAGES
4445VENV := ~/.venvs/python-docs-i18n/
45- PYTHON :=$(shell which python3)
4646MODE := autobuild-dev-html
47- BRANCH :=$(or $(VERSION ) ,$(shell git describe --contains --all HEAD) )
4847JOBS := 4
4948
5049.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
5351for dirname in $$ (find. -name' *.po' | xargs -n1 dirname| sort -u| grep -v' ^\.$$' ); do mkdir -p$( LC_MESSAGES) /$$ dirname; done
5452for file in * .po* /* .po; do ln -f$$ file$( LC_MESSAGES) /$$ file; done
5553. $(VENV ) /bin/activate; $(MAKE ) -C$(CPYTHON_CLONE ) /Doc/ SPHINXOPTS=' -j$(JOBS) -D locale_dirs=locales -D language=$(LANGUAGE) -D gettext_compact=0' $(MODE )
5654
5755.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
5957@$(eval target=$(filter-out $@ ,$(MAKECMDGOALS ) ) )
6058@if [-z $( target) ]; then \
6159echo " \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
6967echo " \x1B[1;31m" " ERROR:$( target) not exist." " \x1B[m" ; \
7068exit 1; \
7169fi
72- @mkdir -p $( LC_MESSAGES )
70+
7371@$(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+
8475@. $(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
8576
77+
8678help :
8779@python3 -c" $$ PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST )
8880
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/`.
9086git 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 )
9289
9390
9491$(VENV ) /bin/activate :
95- mkdir -p$(VENV )
96- $(PYTHON ) -m venv$(VENV )
97-
92+ python3 -m venv$(VENV )
9893
9994$(VENV ) /bin/sphinx-build :$(VENV ) /bin/activate
10095. $(VENV ) /bin/activate; python3 -m pip install sphinx python-docs-theme
@@ -108,7 +103,7 @@ $(VENV)/bin/blurb: $(VENV)/bin/activate
108103
109104.PHONY : upgrade_venv
110105upgrade_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
112107
113108
114109.PHONY : progress
@@ -124,10 +119,7 @@ todo: ## List remaining tasks
124119
125120
126121.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
131123(cd$( CPYTHON_CLONE) /Doc; rm -f build/NEWS)
132124(cd$( CPYTHON_CLONE) /Doc; $( VENV) /bin/sphinx-build -Q -b gettext -D gettext_compact=0. locales/pot/)
133125find$(CPYTHON_CLONE ) /Doc/locales/pot/ -name' *.pot' | \
@@ -146,7 +138,7 @@ endif
146138
147139.PHONY : update_txconfig
148140update_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| \
150142grep --invert-match' ^file_filter = *' | \
151143sed -e' s/source_file = pot\/\(.*\)\.pot/trans.zh_TW = \1.po/' | \
152144sed -n' w .tx/config'