aboutsummaryrefslogtreecommitdiff
path: root/doc/manual/generate-manpage.nix
diff options
context:
space:
mode:
authorAna Hobden <operator@hoverbear.org>2022-10-07 09:07:22 -0700
committerAna Hobden <operator@hoverbear.org>2022-10-07 09:07:22 -0700
commit069409d16787232dfbaac6a580d4e66d11bb5c86 (patch)
tree0dc74aeb64e66c4b33f4c0b2ba5fc43903dfd8d1 /doc/manual/generate-manpage.nix
parentac0fb38e8a5a25a84fa17704bd31b453211263eb (diff)
Print common flags in --help
Diffstat (limited to 'doc/manual/generate-manpage.nix')
-rw-r--r--doc/manual/generate-manpage.nix22
1 files changed, 13 insertions, 9 deletions
diff --git a/doc/manual/generate-manpage.nix b/doc/manual/generate-manpage.nix
index 18a1a8bfe..057719e34 100644
--- a/doc/manual/generate-manpage.nix
+++ b/doc/manual/generate-manpage.nix
@@ -1,11 +1,11 @@
-{ command }:
+{ toplevel }:
with builtins;
with import ./utils.nix;
let
- showCommand = { command, details, filename }:
+ showCommand = { command, details, filename, toplevel }:
let
result = ''
> **Warning** \
@@ -57,14 +57,15 @@ let
maybeOptions = if details.flags == {} then "" else ''
# Options
- ${showOptions details.flags}
+ ${showOptions details.flags toplevel.flags}
'';
- showOptions = options:
+ showOptions = options: commonOptions:
let
+ allOptions = options // commonOptions;
showCategory = cat: ''
${if cat != "" then "**${cat}:**" else ""}
- ${listOptions (filterAttrs (n: v: v.category == cat) options)}
+ ${listOptions (filterAttrs (n: v: v.category == cat) allOptions)}
'';
listOptions = opts: concatStringsSep "\n" (attrValues (mapAttrs showOption opts));
showOption = name: option:
@@ -76,30 +77,33 @@ let
${option.description}
'';
- categories = sort builtins.lessThan (unique (map (cmd: cmd.category) (attrValues options)));
+ categories = sort builtins.lessThan (unique (map (cmd: cmd.category) (attrValues allOptions)));
in concatStrings (map showCategory categories);
in squash result;
appendName = filename: name: (if filename == "nix" then "nix3" else filename) + "-" + name;
- processCommand = { command, details, filename }:
+ processCommand = { command, details, filename, toplevel }:
let
cmd = {
inherit command;
name = filename + ".md";
- value = showCommand { inherit command details filename; };
+ value = showCommand { inherit command details filename toplevel; };
};
subcommand = subCmd: processCommand {
command = command + " " + subCmd;
details = details.commands.${subCmd};
filename = appendName filename subCmd;
+ inherit toplevel;
};
in [ cmd ] ++ concatMap subcommand (attrNames details.commands or {});
+ parsedToplevel = builtins.fromJSON toplevel;
manpages = processCommand {
command = "nix";
- details = builtins.fromJSON command;
+ details = parsedToplevel;
filename = "nix";
+ toplevel = parsedToplevel;
};
tableOfContents = let