Skip to content

Commit 5c06a12

Browse files
committed
Automate asset optimization and cleanup, and more updates
- Automate scrubbing and export of SVG, PNG - Add license - Move docs to subpath - Fancy RTD config
1 parent 8d12383 commit 5c06a12

10 files changed

+675
-443
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
_build/
2+
.direnv/
3+
.env/
4+
.envrc
5+
.tool-versions

.readthedocs.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
version: 2
2+
3+
sphinx:
4+
configuration: "docs/conf.py"
5+
6+
build:
7+
os: ubuntu-22.04
8+
tools:
9+
python: "3.10"
10+
jobs:
11+
pre_build:
12+
- asdf plugin add poetry
13+
- asdf install poetry latest
14+
- asdf global poetry latest
15+
- poetry config virtualenvs.create false

LICENSE

Lines changed: 395 additions & 0 deletions
Large diffs are not rendered by default.

Makefile

Lines changed: 15 additions & 172 deletions
Original file line numberDiff line numberDiff line change
@@ -1,177 +1,20 @@
1-
# Makefile for Sphinx documentation
2-
#
1+
SCOUR=poetry run scour
2+
SCOUR_OPTS=--enable-viewboxing --enable-comment-stripping
33

4-
# You can set these variables from the command line.
5-
SPHINXOPTS =
6-
SPHINXBUILD = sphinx-build
7-
PAPER =
8-
BUILDDIR = _build
4+
INKSCAPE:=$(shell command -v inkscape)
95

10-
# User-friendly check for sphinx-build
11-
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
12-
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
13-
endif
14-
15-
# Internal variables.
16-
PAPEROPT_a4 = -D latex_paper_size=a4
17-
PAPEROPT_letter = -D latex_paper_size=letter
18-
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
19-
# the i18n builder cannot share the environment and doctrees with the others
20-
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
21-
22-
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
23-
24-
help:
25-
@echo "Please use \`make <target>' where <target> is one of"
26-
@echo " html to make standalone HTML files"
27-
@echo " dirhtml to make HTML files named index.html in directories"
28-
@echo " singlehtml to make a single large HTML file"
29-
@echo " pickle to make pickle files"
30-
@echo " json to make JSON files"
31-
@echo " htmlhelp to make HTML files and a HTML help project"
32-
@echo " qthelp to make HTML files and a qthelp project"
33-
@echo " devhelp to make HTML files and a Devhelp project"
34-
@echo " epub to make an epub"
35-
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
36-
@echo " latexpdf to make LaTeX files and run them through pdflatex"
37-
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
38-
@echo " text to make text files"
39-
@echo " man to make manual pages"
40-
@echo " texinfo to make Texinfo files"
41-
@echo " info to make Texinfo files and run them through makeinfo"
42-
@echo " gettext to make PO message catalogs"
43-
@echo " changes to make an overview of all changed/added/deprecated items"
44-
@echo " xml to make Docutils-native XML files"
45-
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
46-
@echo " linkcheck to check all external links for integrity"
47-
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
48-
49-
clean:
50-
rm -rf $(BUILDDIR)/*
51-
52-
html:
53-
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
54-
@echo
55-
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
56-
57-
dirhtml:
58-
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
59-
@echo
60-
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
61-
62-
singlehtml:
63-
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
64-
@echo
65-
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
66-
67-
pickle:
68-
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
69-
@echo
70-
@echo "Build finished; now you can process the pickle files."
71-
72-
json:
73-
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
74-
@echo
75-
@echo "Build finished; now you can process the JSON files."
76-
77-
htmlhelp:
78-
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
79-
@echo
80-
@echo "Build finished; now you can run HTML Help Workshop with the" \
81-
".hhp project file in $(BUILDDIR)/htmlhelp."
82-
83-
qthelp:
84-
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
85-
@echo
86-
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
87-
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
88-
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ReadtheDocsGuidelines.qhcp"
89-
@echo "To view the help file:"
90-
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ReadtheDocsGuidelines.qhc"
91-
92-
devhelp:
93-
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
94-
@echo
95-
@echo "Build finished."
96-
@echo "To view the help file:"
97-
@echo "# mkdir -p $$HOME/.local/share/devhelp/ReadtheDocsGuidelines"
98-
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ReadtheDocsGuidelines"
99-
@echo "# devhelp"
6+
SOURCE_SVG=$(wildcard src/assets/*.svg)
7+
FINAL_SVG=$(addprefix assets/,$(notdir $(SOURCE_SVG)))
8+
FINAL_PNG=$(patsubst %.svg,%.png,$(addprefix assets/,$(notdir $(SOURCE_SVG))))
1009

101-
epub:
102-
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
103-
@echo
104-
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
10+
assets: $(FINAL_SVG) $(FINAL_PNG)
10511

106-
latex:
107-
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
108-
@echo
109-
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
110-
@echo "Run \`make' in that directory to run these through (pdf)latex" \
111-
"(use \`make latexpdf' here to do that automatically)."
12+
$(FINAL_SVG): assets/%.svg: src/assets/%.svg
13+
$(SCOUR) $(SCOUR_OPTS) -i $? -o $@
11214

113-
latexpdf:
114-
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
115-
@echo "Running LaTeX files through pdflatex..."
116-
$(MAKE) -C $(BUILDDIR)/latex all-pdf
117-
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
118-
119-
latexpdfja:
120-
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
121-
@echo "Running LaTeX files through platex and dvipdfmx..."
122-
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
123-
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
124-
125-
text:
126-
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
127-
@echo
128-
@echo "Build finished. The text files are in $(BUILDDIR)/text."
129-
130-
man:
131-
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
132-
@echo
133-
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
134-
135-
texinfo:
136-
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
137-
@echo
138-
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
139-
@echo "Run \`make' in that directory to run these through makeinfo" \
140-
"(use \`make info' here to do that automatically)."
141-
142-
info:
143-
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
144-
@echo "Running Texinfo files through makeinfo..."
145-
make -C $(BUILDDIR)/texinfo info
146-
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
147-
148-
gettext:
149-
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
150-
@echo
151-
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
152-
153-
changes:
154-
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
155-
@echo
156-
@echo "The overview file is in $(BUILDDIR)/changes."
157-
158-
linkcheck:
159-
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
160-
@echo
161-
@echo "Link check complete; look for any errors in the above output " \
162-
"or in $(BUILDDIR)/linkcheck/output.txt."
163-
164-
doctest:
165-
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
166-
@echo "Testing of doctests in the sources finished, look at the " \
167-
"results in $(BUILDDIR)/doctest/output.txt."
168-
169-
xml:
170-
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
171-
@echo
172-
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
173-
174-
pseudoxml:
175-
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
176-
@echo
177-
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
15+
$(FINAL_PNG): assets/%.png: src/assets/%.svg
16+
ifndef INKSCAPE
17+
@echo "You need Inkscape installed to build these files"
18+
exit 1
19+
endif
20+
$(INKSCAPE) --export-filename=$@ $?

0 commit comments

Comments
 (0)