aboutsummaryrefslogtreecommitdiff
path: root/doc/manual
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2021-07-16 14:15:38 +0200
committerregnat <rg@regnat.ovh>2021-07-19 16:55:56 +0200
commitc5f5d615a66c2b9411857914893eb854796a482f (patch)
tree23bd27d34f8edf98b727b55389816bb876479198 /doc/manual
parentdb4d4cf4ba42727edd8cc5a6c516554fb8a6b688 (diff)
Cleanup the generation of the nix3 manpages
Use a dedicated make target for the man page rather than bundling the generation as part of `install`. Also make sure that `make install` is a fixpoint by - Removing the generated markdown files from `MANUAL_SRCS` - Not having the manpage generation write in its source directory so as to not update its timestamp (it would run each time otherwise)
Diffstat (limited to 'doc/manual')
-rw-r--r--doc/manual/local.mk19
1 files changed, 14 insertions, 5 deletions
diff --git a/doc/manual/local.mk b/doc/manual/local.mk
index e25157af8..435301279 100644
--- a/doc/manual/local.mk
+++ b/doc/manual/local.mk
@@ -1,6 +1,8 @@
ifeq ($(doc_generate),yes)
-MANUAL_SRCS := $(call rwildcard, $(d)/src, *.md)
+ALL_MD_FILES := $(call rwildcard, $(d)/src, *.md)
+GENERATED_MD_FILES := $(call rwildcard, $(d)/src/command-ref/new-cli, *.md)
+MANUAL_SRCS := $(filter-out $(GENERATED_MD_FILES), $(ALL_MD_FILES))
# Generate man pages.
man-pages := $(foreach n, \
@@ -75,13 +77,20 @@ $(d)/builtins.json: $(bindir)/nix
install: $(docdir)/manual/index.html
# Generate 'nix' manpages.
-install: $(d)/src/command-ref/new-cli
+install: $(mandir)/man1/nix3-build.1
+
+# Technically this rule generates all the `nix3-*` manpages, but since we don’t
+# know their list statically and they are all generated at once anyways, we can
+# just be dirty and only track one
+$(mandir)/man1/nix3-build.1: $(d)/src/command-ref/new-cli
$(trace-gen) for i in doc/manual/src/command-ref/new-cli/*.md; do \
name=$$(basename $$i .md); \
+ tmpFile=$$(mktemp); \
if [[ $$name = SUMMARY ]]; then continue; fi; \
- printf "Title: %s\n\n" "$$name" > $$i.tmp; \
- cat $$i >> $$i.tmp; \
- lowdown -sT man -M section=1 $$i.tmp -o $(mandir)/man1/$$name.1; \
+ printf "Title: %s\n\n" "$$name" > $$tmpFile; \
+ cat $$i >> $$tmpFile; \
+ lowdown -sT man -M section=1 $$tmpFile -o $(mandir)/man1/$$name.1; \
+ rm $$tmpFile; \
done
$(docdir)/manual/index.html: $(MANUAL_SRCS) $(d)/book.toml $(d)/custom.css $(d)/src/SUMMARY.md $(d)/src/command-ref/new-cli $(d)/src/command-ref/conf-file.md $(d)/src/expressions/builtins.md