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) | |
download | nixlib-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar nixlib-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.gz nixlib-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.bz2 nixlib-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.lz nixlib-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.xz nixlib-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.zst nixlib-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.zip |
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 50fb9ede08de..a0b9136ca7bc 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 07884ed657e4..a41255067bfb 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}`') |