blob: d1160daa80b38c0f30fe31507ca8a015236ad9a5 [file] [log] [blame]
Zack Williams553a3632019-08-09 17:14:43 -07001# Makefile for Trellis documentation created with Sphinx
2
3# use bash for pushd/popd, and to fail quickly. virtualenv's activate
4# has undefined variables, so no -u
5SHELL = bash -e -o pipefail
6
7# You can set these variables from the command line.
8SPHINXOPTS ?=
9SPHINXBUILD ?= sphinx-build
10SOURCEDIR ?= .
11BUILDDIR ?= _build
12
Zack Williamsd63d35b2020-06-23 14:12:46 -070013VENV_NAME := doc_venv
14
Zack Williams553a3632019-08-09 17:14:43 -070015# Put it first so that "make" without argument is like "make help".
Zack Williamsd63d35b2020-06-23 14:12:46 -070016help: $(VENV_NAME)
17 source ./$(VENV_NAME)/bin/activate ;\
Zack Williams553a3632019-08-09 17:14:43 -070018 $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
19
20.PHONY: help lint reload Makefile test
21
22# Create the virtualenv with all the tools installed
Zack Williamsd63d35b2020-06-23 14:12:46 -070023$(VENV_NAME):
24 virtualenv -p python3 $(VENV_NAME) ;\
25 source ./$(VENV_NAME)/bin/activate ;\
Zack Williams553a3632019-08-09 17:14:43 -070026 pip install -r requirements.txt
27
28# automatically reload changes in browser as they're made
Zack Williamsd63d35b2020-06-23 14:12:46 -070029reload: $(VENV_NAME)
30 source $</bin/activate ; set -u ;\
Zack Williams553a3632019-08-09 17:14:43 -070031 sphinx-reload $(SOURCEDIR)
32
Zack Williamsd63d35b2020-06-23 14:12:46 -070033# build multiple versions
34multiversion: $(VENV_NAME) Makefile
35 source $</bin/activate ; set -u ;\
36 sphinx-multiversion "$(SOURCEDIR)" "$(BUILDDIR)/multiversion" $(SPHINXOPTS)
37 cp "$(SOURCEDIR)/_templates/meta_refresh.html" "$(BUILDDIR)/multiversion/index.html"
38
Zack Williams553a3632019-08-09 17:14:43 -070039# lint and link verification. linkcheck is built into sphinx
Zack Williamsd63d35b2020-06-23 14:12:46 -070040test: lint spelling linkcheck
Zack Williams553a3632019-08-09 17:14:43 -070041
Zack Williamsd63d35b2020-06-23 14:12:46 -070042lint: doc8
Zack Williams553a3632019-08-09 17:14:43 -070043
Zack Williamsd63d35b2020-06-23 14:12:46 -070044doc8: $(VENV_NAME) | $(OTHER_REPO_DOCS)
45 source $</bin/activate ; set -u ;\
46 doc8 --max-line-length 119 \
47 $$(find . -name \*.rst ! -path "*venv*" ! -path "*vendor*" ! -path "*repos*" )
Zack Williams553a3632019-08-09 17:14:43 -070048
49# clean up
50clean:
51 rm -rf $(BUILDDIR)
52
53clean-all: clean
Zack Williamsd63d35b2020-06-23 14:12:46 -070054 rm -rf $(VENV_NAME)
Zack Williams553a3632019-08-09 17:14:43 -070055
56# Catch-all target: route all unknown targets to Sphinx using the new
57# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
Zack Williamsd63d35b2020-06-23 14:12:46 -070058%: $(VENV_NAME) | $(OTHER_REPO_DOCS)
59 source $</bin/activate ; set -u ;\
Zack Williams553a3632019-08-09 17:14:43 -070060 $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)