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/make-options-doc | |
parent | 6c182075bb453792683369eca2bdc630cb551a91 (diff) | |
download | nixpkgs-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar nixpkgs-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.gz nixpkgs-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.bz2 nixpkgs-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.lz nixpkgs-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.xz nixpkgs-4d3aef762f3c77f0e4040fcc66298b46694a7f6a.tar.zst nixpkgs-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/make-options-doc')
-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 50fb9ede08d..a0b9136ca7b 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 07884ed657e..a41255067bf 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}`') |