-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile
72 lines (56 loc) · 2.25 KB
/
Makefile
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
# Makefile for Sphinx documentation
# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <[email protected]>
# SPDX-License-Identifier: Apache-2.0
# use bash for pushd/popd, and to fail quickly
SHELL = bash -e -o pipefail
# You can set these variables from the command line.
SPHINXOPTS ?= -W
SPHINXBUILD ?= sphinx-build
SOURCEDIR ?= .
BUILDDIR ?= _build
# Create the virtualenv with all the tools installed
VENV_NAME := venv-docs
# Put it first so that "make" without argument runs "make help".
help: $(VENV_NAME)
source ./$(VENV_NAME)/bin/activate ; set -u ;\
$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile test doc8 dict-check sort-dict license clean clean-all
$(VENV_NAME):
python3 -m venv $@ ;\
source ./$@/bin/activate ;\
pip install -r requirements.txt
# test - check that local build will lint, spelling is correct, then
# build the html site.
test: doc8 dict-check spelling linkcheck
# lint all .rst files
doc8: $(VENV_NAME)
source ./$</bin/activate ; set -u;\
doc8 --ignore-path $< --ignore-path _build --ignore-path LICENSES --max-line-length 119
# Words in dict.txt must be in the correct alphabetical order and must not duplicated.
dict-check: sort-dict
@set -u ;\
git diff --exit-code dict.txt && echo "dict.txt is sorted" && exit 0 || \
echo "dict.txt is unsorted or needs to be added to git index" ; exit 1
sort-dict:
@sort -u < dict.txt > dict_sorted.txt
@mv dict_sorted.txt dict.txt
license: $(VENV_NAME) ## Check license with the reuse tool
source ./$</bin/activate ; set -u ;\
reuse --version ;\
reuse --root . lint
# clean up
clean:
rm -rf "$(BUILDDIR)"
# clean-all - delete the virtualenv too
clean-all: clean
rm -rf "$(VENV_NAME)"
# build multiple versions
multiversion: $(VENV_NAME) Makefile
source $</bin/activate ; set -u ;\
sphinx-multiversion "$(SOURCEDIR)" "$(BUILDDIR)/multiversion" $(SPHINXOPTS)
cp "$(SOURCEDIR)/_templates/meta_refresh.html" "$(BUILDDIR)/multiversion/index.html"
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: $(VENV_NAME) Makefile
source ./$</bin/activate ; set -u;\
$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)