diff options
author | pennae <github@quasiparticle.net> | 2023-02-04 23:16:30 +0100 |
---|---|---|
committer | pennae <82953136+pennae@users.noreply.github.com> | 2023-02-21 18:19:00 +0100 |
commit | 4d3aef762f3c77f0e4040fcc66298b46694a7f6a (patch) | |
tree | 92e4faac5a8f95b7ffabc6f58dfd046ec38288fd /nixos/lib | |
parent | 6c182075bb453792683369eca2bdc630cb551a91 (diff) |
nixos-render-docs: add options commonmark converter
the old method of pasting parts of options.json into a markdown document and hoping for the best no longer works now that options.json contains more than just docbook. given the infrastructure we have now we can actually render options.md properly, so we may as well do that.
Diffstat (limited to 'nixos/lib')
-rw-r--r-- | nixos/lib/make-options-doc/default.nix | 11 | ||||
-rw-r--r-- | nixos/lib/make-options-doc/generateDoc.py | 33 |
2 files changed, 9 insertions, 35 deletions
diff --git a/nixos/lib/make-options-doc/default.nix b/nixos/lib/make-options-doc/default.nix index 50fb9ede08de4..a0b9136ca7bc6 100644 --- a/nixos/lib/make-options-doc/default.nix +++ b/nixos/lib/make-options-doc/default.nix @@ -98,11 +98,14 @@ in rec { > $out ''; - optionsCommonMark = pkgs.runCommand "options.md" {} '' - ${pkgs.python3Minimal}/bin/python ${./generateDoc.py} \ - --format commonmark \ + optionsCommonMark = pkgs.runCommand "options.md" { + nativeBuildInputs = [ pkgs.nixos-render-docs ]; + } '' + nixos-render-docs -j $NIX_BUILD_CORES options commonmark \ + --manpage-urls ${pkgs.path + "/doc/manpage-urls.json"} \ + --revision ${lib.escapeShellArg revision} \ ${optionsJSON}/share/doc/nixos/options.json \ - > $out + $out ''; optionsJSON = pkgs.runCommand "options.json" diff --git a/nixos/lib/make-options-doc/generateDoc.py b/nixos/lib/make-options-doc/generateDoc.py index 07884ed657e49..a41255067bfba 100644 --- a/nixos/lib/make-options-doc/generateDoc.py +++ b/nixos/lib/make-options-doc/generateDoc.py @@ -2,7 +2,7 @@ import argparse import json import sys -formats = ['commonmark', 'asciidoc'] +formats = ['asciidoc'] parser = argparse.ArgumentParser( description = 'Generate documentation for a set of JSON-formatted NixOS options' @@ -38,33 +38,6 @@ class OptionsEncoder(json.JSONEncoder): return super().encode(obj) -def generate_commonmark(options): - for (name, value) in options.items(): - print('##', name.replace('<', '<').replace('>', '>')) - print(value['description']) - print() - if 'type' in value: - print('*_Type_*') - print ('```') - print(value['type']) - print ('```') - print() - print() - if 'default' in value: - print('*_Default_*') - print('```') - print(json.dumps(value['default'], cls=OptionsEncoder, ensure_ascii=False, separators=(',', ':'))) - print('```') - print() - print() - if 'example' in value: - print('*_Example_*') - print('```') - print(json.dumps(value['example'], cls=OptionsEncoder, ensure_ascii=False, separators=(',', ':'))) - print('```') - print() - print() - # TODO: declarations: link to github def generate_asciidoc(options): for (name, value) in options.items(): @@ -103,9 +76,7 @@ def generate_asciidoc(options): with open(args.nix_options_path) as nix_options_json: options = json.load(nix_options_json) - if args.format == 'commonmark': - generate_commonmark(options) - elif args.format == 'asciidoc': + if args.format == 'asciidoc': generate_asciidoc(options) else: raise Exception(f'Unsupported documentation format `--format {args.format}`') |