88# Configuration
99
1010CPYTHON_PATH := cpython # Current commit for this upstream repo is setted by the submodule
11- BRANCH := 3.7
11+ BRANCH := 3.8
1212LANGUAGE_TEAM := python-docs-es
1313LANGUAGE := es
1414
1515# Internal variables
1616VENV := $(shell realpath ./venv)
1717PYTHON := $(shell which python3)
18- WORKDIRS := $(VENV ) /workdirs
19- CPYTHON_WORKDIR := $(WORKDIRS ) /cpython
20- LOCALE_DIR := $(WORKDIRS ) /locale
21- JOBS := auto
22- SPHINXERRORHANDLING := "-W"
23- TRANSIFEX_PROJECT := python-newest
18+ CPYTHON_WORKDIR := cpython
19+ OUTPUT_DOCTREE := $(CPYTHON_WORKDIR ) /Doc/_build/doctree
20+ OUTPUT_HTML := $(CPYTHON_WORKDIR ) /Doc/_build/html
21+ LOCALE_DIR := $(CPYTHON_WORKDIR ) /locale
22+ TRANSIFEX_PROJECT := python-docs-es
2423POSPELL_TMP_DIR := .pospell
2524
2625
2726.PHONY : help
2827help :
2928 @echo " Please use 'make <target>' where <target> is one of:"
3029 @echo " build Build an local version in html, with warnings as errors"
31- @echo " push Update translations and Transifex config in the repository"
32- @echo " pull Download translations from Transifex; calls 'venv'"
33- @echo " tx-config Recreate an up-to-date project .tx/config; calls 'pot'"
34- @echo " pot Create/Update POT files from source files"
3530 @echo " serve Serve a built documentation on http://localhost:8000"
36- @echo " spell Check spelling, storing output in $( POSPELL_TMP_DIR) "
37- @echo " progress To compute current progression on the tutorial"
31+ @echo " spell Check spelling"
32+ @echo " wrap Wrap all the PO files to a fixed column width"
33+ @echo " progress To compute current progression on the tutorial"
3834 @echo " "
3935
4036
4440# treated as errors, which is good to skip simple Sphinx syntax mistakes.
4541.PHONY : build
4642build : setup
47- $(MAKE ) -C $(CPYTHON_WORKDIR ) /Doc/ \
48- VENVDIR=$(CPYTHON_WORKDIR ) /Doc/venv \
49- PYTHON=$(PYTHON ) \
50- SPHINXERRORHANDLING=$(SPHINXERRORHANDLING ) \
51- SPHINXOPTS=' -q --keep-going -j$(JOBS) \
52- -D locale_dirs=$(LOCALE_DIR ) \
53- -D language=$(LANGUAGE ) \
54- -D gettext_compact=0 \
55- -D latex_engine=xelatex \
56- -D latex_elements.inputenc= \
57- -D latex_elements.fontenc=' \
58- html;
59-
60- @echo " Success! Open file://$( CPYTHON_WORKDIR) /Doc/build/html/index.html, " \
61- " or run 'make serve' to see them in http://localhost:8000" ;
62-
63-
64- # push: push new translation files and Transifex config files to repository,
65- # if any. Do nothing if there is no file changes. If GITHUB_TOKEN is set,
66- # then assumes we are in GitHub Actions, requiring different push args
67- .PHONY : push
68- push :
69- if ! git status -s | egrep ' \.po|\.tx/config' ; then \
70- echo " Nothing to commit" ; \
71- exit 0; \
72- else \
73- git add * .po ** /* .po .tx/config; \
74- git commit -m ' Update translations from Transifex' ; \
75- if [ $( GITHUB_TOKEN) != " " ]; then \
76- header=" $( echo -n token:" $( GITHUB_TOKEN) " | base64) " ; \
77- git -c http.extraheader=" AUTHORIZATION: basic $( header) " push; \
78- else \
79- git push; \
80- fi ; \
81- fi
82-
83-
84- # pull: Download translations files from Transifex, and apply line wrapping.
85- # For downloading new translation files, first run "tx-config" target
86- # to update the translation file mapping.
87- .PHONY : pull
88- pull : venv
89- $(VENV ) /bin/tx pull --force --language=$(LANGUAGE ) --parallel
90- $(VENV ) /bin/powrap --quiet * .po ** /* .po
91-
92-
93- # tx-config: After running "pot", create a new Transifex config file by
94- # reading pot files generated, then tweak this config file to
95- # LANGUAGE.
96- .PHONY : tx-config
97- tx-config : pot
98- cd $(CPYTHON_WORKDIR ) /Doc/locales; \
99- rm -rf .tx; \
100- $(VENV ) /bin/sphinx-intl create-txconfig; \
101- $(VENV ) /bin/sphinx-intl update-txconfig-resources \
102- --transifex-project-name=$(TRANSIFEX_PROJECT ) \
103- --locale-dir . \
104- --pot-dir pot;
105-
106- cd $(OLDPWD )
107- mv $(CPYTHON_WORKDIR ) /Doc/locales/.tx/config .tx/config
108-
109- sed -i .tx/config \
110- -e ' /^source_file/d' \
111- -e ' s|<lang>/LC_MESSAGES/||' \
112- -e " s|^file_filter|trans.$( LANGUAGE) |"
113-
114-
115- # pot: After running "setup" target, run a cpython Makefile's target
116- # to generate .pot files under $(CPYTHON_WORKDIR)/Doc/locales/pot
117- .PHONY : pot
118- pot : setup
119- $(MAKE ) -C $(CPYTHON_WORKDIR ) /Doc/ \
120- VENVDIR=$(CPYTHON_WORKDIR ) /Doc/venv \
121- PYTHON=$(PYTHON ) \
122- ALLSPHINXOPTS=' -E -b gettext \
123- -D gettext_compact=0 \
124- -d build/.doctrees . \
125- locales/pot' \
126- build
43+ sphinx-build -j auto -b html -d $(OUTPUT_DOCTREE ) -D language=$(LANGUAGE ) . $(OUTPUT_HTML )
44+ @echo " Success! Open file://` pwd` /$( OUTPUT_HTML) /index.html, " \
45+ " or run 'make serve' to see them in http://localhost:8000" ;
12746
12847
12948# setup: After running "venv" target, prepare that virtual environment with
@@ -132,39 +51,19 @@ pot: setup
13251# the translation files copy which could have new/updated files.
13352.PHONY : setup
13453setup : venv
135- # Setup the main clone
13654 git submodule sync
13755 git submodule update --init --force $(CPYTHON_PATH )
138- # Setup the current work directory
139- if ! [ -d $( CPYTHON_WORKDIR) ]; then \
140- rm -fr $(WORKDIRS ) ; \
141- mkdir -p $(WORKDIRS ) ; \
142- git clone $(CPYTHON_PATH ) $(CPYTHON_WORKDIR ) ; \
143- $(MAKE ) -C $(CPYTHON_WORKDIR ) /Doc \
144- VENVDIR=$(CPYTHON_WORKDIR ) /Doc/venv \
145- PYTHON=$(PYTHON ) venv; \
146- fi
147-
148- # Setup translation files
149- if ! [ -d $( LOCALE_DIR) /$( LANGUAGE) /LC_MESSAGES/ ]; then \
150- mkdir -p $(LOCALE_DIR ) /$(LANGUAGE ) /LC_MESSAGES/; \
151- fi ; \
152- cp --parents * .po ** /* .po $(LOCALE_DIR ) /$(LANGUAGE ) /LC_MESSAGES/ \
15356
15457
15558# venv: create a virtual environment which will be used by almost every
15659# other target of this script
15760.PHONY : venv
15861venv :
159- if [ ! -d $( VENV) ]; then \
62+ if [ ! -d $( VENV) ]; then \
16063 $(PYTHON ) -m venv --prompt $(LANGUAGE_TEAM ) $(VENV ) ; \
16164 fi
162-
163- $(VENV ) /bin/python -m pip install -q -r requirements.txt 2> $(VENV ) /pip-install.log
164-
165- if grep -q ' pip install --upgrade pip' $( VENV) /pip-install.log; then \
166- $(VENV ) /bin/pip install -q --upgrade pip; \
167- fi
65+
66+ $(VENV)/bin/python -m pip install -q -r requirements.txt
16867
16968
17069# serve: serve the documentation in a simple local web server, using cpython
@@ -174,28 +73,6 @@ serve:
17473 $(MAKE ) -C $(CPYTHON_WORKDIR ) /Doc serve
17574
17675
177- # list files for spellchecking
178- SRCS := $(wildcard * .po ** /* .po)
179- DESTS = $(addprefix $(POSPELL_TMP_DIR ) /out/,$(patsubst % .po,% .txt,$(SRCS ) ) )
180-
181-
182- # spell: run spell checking tool in all po files listed in SRCS variable,
183- # storing the output in text files DESTS for proofreading. The
184- # DESTS target run the spellchecking, while the typos.txt target
185- # gather all reported issues in one file, sorted without redundancy
186- .PHONY : spell
187- spell : venv $(DESTS ) $(POSPELL_TMP_DIR ) /typos.txt
188-
189- $(POSPELL_TMP_DIR ) /out/% .txt : % .po dict
190- @echo " Checking $< ..."
191- @mkdir -p $(@D )
192- @$(VENV ) /bin/pospell -l $(LANGUAGE ) -p dict $< > $@ || true
193-
194- $(POSPELL_TMP_DIR ) /typos.txt :
195- @echo " Gathering all typos in $( POSPELL_TMP_DIR) /typos.txt ..."
196- @cut -d: -f3- $(DESTS ) | sort -u > $@
197-
198-
19976# clean: remove all .mo files and the venv directory that may exist and
20077# could have been created by the actions in other targets of this script
20178.PHONY : clean
@@ -207,3 +84,13 @@ clean:
20784.PHONY : progress
20885progress : venv
20986 $(VENV ) /bin/potodo --offline --path tutorial/
87+
88+
89+ .PHONY : spell
90+ spell : venv
91+ $(VENV ) /bin/pospell -p dict -l es_ES ** /* .po
92+
93+
94+ .PHONY : wrap
95+ wrap : venv
96+ $(VENV ) /bin/powrap ** /* .po
0 commit comments