mirror of
https://codeberg.org/openpgp/notes.git
synced 2024-11-14 12:22:05 +01:00
71 lines
2.7 KiB
Makefile
71 lines
2.7 KiB
Makefile
|
# SPDX-FileCopyrightText: 2023 The "Notes on OpenPGP" project
|
||
|
# SPDX-License-Identifier: CC0-1.0
|
||
|
#
|
||
|
# Minimal makefile for Sphinx documentation
|
||
|
#
|
||
|
|
||
|
# You can set these variables from the command line, and also
|
||
|
# from the environment for the first two.
|
||
|
CODESPELL ?= codespell
|
||
|
EBOOK_VIEWER ?= ebook-viewer
|
||
|
EPUBCHECK ?= epubcheck
|
||
|
INKSCAPE ?= inkscape
|
||
|
SPHINXOPTS ?= -W
|
||
|
SPHINXBUILD ?= sphinx-build
|
||
|
LYCHEE ?= lychee
|
||
|
PRINTF ?= printf
|
||
|
RM ?= rm
|
||
|
WATCHEXEC ?= watchexec
|
||
|
ASSETSDIR = assets
|
||
|
SOURCEDIR = source
|
||
|
BUILDDIR = build
|
||
|
|
||
|
# clean build output and also preprocessed/ converted data
|
||
|
clean-all: clean
|
||
|
@$(RM) -rv $(SOURCEDIR)/plain_svg/
|
||
|
|
||
|
# convert all SVG to plain SVGs without metadata and paths instead of text
|
||
|
convert-svg:
|
||
|
for file in $(ASSETSDIR)/inkscape/*.svg $(ASSETSDIR)/drawio/*.svg; do if [[ ! -f $(SOURCEDIR)/plain_svg/$$(basename $$file) ]]; then $(INKSCAPE) --export-text-to-path --export-plain-svg --export-filename=$(SOURCEDIR)/plain_svg/$$(basename $$file) $$file; fi; done
|
||
|
|
||
|
epub: convert-svg
|
||
|
@$(SPHINXBUILD) -M epub "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||
|
|
||
|
epub-check: clean epub
|
||
|
@$(EPUBCHECK) "$(BUILDDIR)/epub/"*.epub
|
||
|
|
||
|
# use watchexec to rebuild the EPUB whenever a markdown file changes
|
||
|
# this target kills *any* open instance of calibre's ebook-viewer, that is currently showing OpenPGPforapplicationdevelopers.epub
|
||
|
epub-watch:
|
||
|
@$(WATCHEXEC) --shell bash -e css,html,j2,md,py,svg 'make clean epub && ev_pid="$$(pgrep -af "^python3.*ebook-viewer.*OpenPGP_for_application_developers" | cut -f1 -d " ")" && if [[ -n "$$ev_pid" ]]; then kill -9 "$$ev_pid"; fi && $(EBOOK_VIEWER) $(BUILDDIR)/epub/OpenPGP_for_application_developers.epub &'
|
||
|
|
||
|
# Put it first so that "make" without argument is like "make help".
|
||
|
help:
|
||
|
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||
|
|
||
|
html: convert-svg
|
||
|
@$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||
|
|
||
|
html-linkcheck: clean html
|
||
|
@$(LYCHEE) --exclude "https://openpgp.dev*" --exclude "https://codeberg.org/openpgp/notes" "$(BUILDDIR)/html/"*.html
|
||
|
|
||
|
# use watchexec to rebuild the HTML whenever a markdown file changes
|
||
|
html-watch:
|
||
|
@$(WATCHEXEC) --shell bash -e css,html,j2,md,py,svg 'make clean html'
|
||
|
|
||
|
# spell check all sources
|
||
|
# NOTE: diagrams are not yet spell checked, but we emit the required changes
|
||
|
codespell:
|
||
|
@$(PRINTF) "The following change suggestions are only warnings! (Please don't fix them)\n"
|
||
|
@$(CODESPELL) source/diag || true
|
||
|
@$(CODESPELL) input/ || true
|
||
|
@$(PRINTF) "The following change suggestions are errors!\n"
|
||
|
@$(CODESPELL) .
|
||
|
|
||
|
.PHONY: help Makefile
|
||
|
|
||
|
# Catch-all target: route all unknown targets to Sphinx using the new
|
||
|
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||
|
%: Makefile
|
||
|
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|