forked from AFPy/python-docs-fr
0086ed1f76
Sans cela, make spell vérifie bien plus de fichiers que nécessaire car un bon nombre de modifications ont été effectuées entre 3.9 et une branche courante fondée sur 3.10.
164 lines
5.2 KiB
Makefile
164 lines
5.2 KiB
Makefile
# Makefile for French Python Documentation
|
|
#
|
|
# Here is what you can do:
|
|
#
|
|
# - make # Automatically build an HTML local version
|
|
# - make todo # To list remaining tasks and show current progression
|
|
# - make verifs # To check for correctness: wrapping, spelling
|
|
# - make wrap # To check for wrapping
|
|
# - make spell # To check for spelling
|
|
# - make merge # To merge pot from upstream
|
|
# - make fuzzy # To find fuzzy strings
|
|
#
|
|
# Modes are: autobuild-stable, autobuild-dev, and autobuild-html,
|
|
# documented in gen/src/3.6/Doc/Makefile as we're only delegating the
|
|
# real work to the Python Doc Makefile.
|
|
|
|
# Configuration
|
|
|
|
# The CPYTHON_CURRENT_COMMIT is the commit, in the cpython repository,
|
|
# from which we generated our po files. We use it here so when we
|
|
# test build, we're building with the .rst files that generated our
|
|
# .po files.
|
|
CPYTHON_CURRENT_COMMIT := cf739332bd039cd2303b58663a804f784883820d
|
|
|
|
CPYTHON_PATH := ../cpython/
|
|
|
|
LANGUAGE := fr
|
|
BRANCH := 3.10
|
|
|
|
EXCLUDED := whatsnew/ c-api/
|
|
|
|
# Internal variables
|
|
|
|
UPSTREAM := https://github.com/python/cpython
|
|
|
|
PYTHON := $(shell which python3)
|
|
MODE := html
|
|
POSPELL_TMP_DIR := .pospell/
|
|
JOBS := auto
|
|
|
|
# Detect OS
|
|
|
|
ifeq '$(findstring ;,$(PATH))' ';'
|
|
detected_OS := Windows
|
|
else
|
|
detected_OS := $(shell uname 2>/dev/null || echo Unknown)
|
|
detected_OS := $(patsubst CYGWIN%,Cygwin,$(detected_OS))
|
|
detected_OS := $(patsubst MSYS%,MSYS,$(detected_OS))
|
|
detected_OS := $(patsubst MINGW%,MSYS,$(detected_OS))
|
|
endif
|
|
|
|
ifeq ($(detected_OS),Darwin) # Mac OS X
|
|
CP_CMD := gcp # accessible with `brew install coreutils` or `brew upgrade coreutils`
|
|
else
|
|
CP_CMD := cp
|
|
endif
|
|
|
|
.PHONY: all
|
|
all: ensure_prerequisites
|
|
git -C $(CPYTHON_PATH) checkout $(CPYTHON_CURRENT_COMMIT)
|
|
mkdir -p locales/$(LANGUAGE)/LC_MESSAGES/
|
|
$(CP_CMD) -u --parents *.po */*.po locales/$(LANGUAGE)/LC_MESSAGES/
|
|
$(MAKE) -C $(CPYTHON_PATH)/Doc/ \
|
|
SPHINXOPTS='-j$(JOBS) \
|
|
-D locale_dirs=$(abspath locales) \
|
|
-D language=$(LANGUAGE) \
|
|
-D gettext_compact=0 \
|
|
-D latex_engine=xelatex \
|
|
-D latex_elements.inputenc= \
|
|
-D latex_elements.fontenc=' \
|
|
$(MODE)
|
|
@echo "Build success, open file://$(abspath $(CPYTHON_PATH))/Doc/build/html/index.html or run 'make serve' to see them."
|
|
|
|
|
|
.PHONY: ensure_prerequisites
|
|
ensure_prerequisites:
|
|
@if [ -z $(CPYTHON_PATH) ]; then \
|
|
echo "Your CPYTHON_PATH is empty, please provide one."; \
|
|
exit 1; \
|
|
fi
|
|
@if ! [ -d $(CPYTHON_PATH) ]; then \
|
|
echo "Building the translation requires a cpython clone."; \
|
|
echo "Please provide the path to a clone using the CPYTHON_PATH variable."; \
|
|
echo "(Currently CPYTHON_PATH is $(CPYTHON_PATH)."; \
|
|
echo "So you may want to run:"; \
|
|
echo ""; \
|
|
echo " git clone $(UPSTREAM) $(CPYTHON_PATH)"; \
|
|
exit 1; \
|
|
fi
|
|
@if [ -n "$$(git -C $(CPYTHON_PATH) status --porcelain)" ]; then \
|
|
echo "Your cpython clone at $(CPYTHON_PATH) is not clean."; \
|
|
echo "In order to avoid breaking things, please clean it first."; \
|
|
exit 1; \
|
|
fi
|
|
@if ! (blurb help >/dev/null 2>&1 && sphinx-build --version >/dev/null 2>&1); then \
|
|
git -C $(CPYTHON_PATH) checkout $(BRANCH); \
|
|
echo "You're missing dependencies, please enable a venv and install:"; \
|
|
echo ""; \
|
|
echo " python -m pip install -r requirements.txt -r $(CPYTHON_PATH)/Doc/requirements.txt"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
.PHONY: serve
|
|
serve:
|
|
$(MAKE) -C $(CPYTHON_PATH)/Doc/ serve
|
|
|
|
.PHONY: todo
|
|
todo: ensure_prerequisites
|
|
potodo --exclude venv .venv $(EXCLUDED)
|
|
|
|
.PHONY: wrap
|
|
wrap: ensure_prerequisites
|
|
@echo "Verify wrapping"
|
|
powrap --check --quiet *.po **/*.po
|
|
|
|
SRCS = $(shell git diff --name-only $(BRANCH) | grep '.po$$')
|
|
# foo/bar.po => $(POSPELL_TMP_DIR)/foo/bar.po.out
|
|
DESTS = $(addprefix $(POSPELL_TMP_DIR)/,$(addsuffix .out,$(SRCS)))
|
|
|
|
.PHONY: spell
|
|
spell: ensure_prerequisites $(DESTS)
|
|
|
|
$(POSPELL_TMP_DIR)/%.po.out: %.po dict
|
|
@echo "Pospell checking $<..."
|
|
mkdir -p $(@D)
|
|
pospell -p dict -l fr_FR $< && touch $@
|
|
|
|
.PHONY: fuzzy
|
|
fuzzy: ensure_prerequisites
|
|
potodo -f --exclude venv .venv $(EXCLUDED)
|
|
|
|
.PHONY: verifs
|
|
verifs: wrap spell
|
|
|
|
.PHONY: merge
|
|
merge: ensure_prerequisites
|
|
@echo "Merge from $(UPSTREAM)"
|
|
git -C $(CPYTHON_PATH) checkout $(BRANCH)
|
|
git -C $(CPYTHON_PATH) pull --ff-only
|
|
(cd $(CPYTHON_PATH)/Doc; sphinx-build -Q -b gettext -D gettext_compact=0 . ../pot)
|
|
find $(CPYTHON_PATH)/pot/ -name '*.pot' |\
|
|
while read -r POT; \
|
|
do \
|
|
PO="./$$(echo "$$POT" | sed "s#$(CPYTHON_PATH)/pot/##; s#\.pot\$$#.po#")"; \
|
|
mkdir -p "$$(dirname "$$PO")"; \
|
|
if [ -f "$$PO" ]; \
|
|
then \
|
|
msgmerge --backup=off --force-po -U "$$PO" "$$POT"; \
|
|
else \
|
|
msgcat -o "$$PO" "$$POT"; \
|
|
fi \
|
|
done
|
|
rm -fr $(CPYTHON_PATH)/pot/
|
|
sed -i 's|^#: .*Doc/|#: |' *.po */*.po
|
|
powrap -m
|
|
@printf "\n%s %s\n" "Replace CPYTHON_CURRENT_COMMIT in Makefile by: " $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)
|
|
@printf 'To add, you can use:\n git status -s | grep "^ M .*\.po" | cut -d" " -f3 | while read -r file; do if [ $$(git diff "$$file" | wc -l) -gt 13 ]; then git add "$$file"; fi ; done\n'
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
@echo "Cleaning *.mo and $(POSPELL_TMP_DIR)"
|
|
rm -fr $(POSPELL_TMP_DIR)
|
|
find -name '*.mo' -delete
|