summary refs log tree commit diff
path: root/nixos/lib/make-options-doc
diff options
context:
space:
mode:
authorpennae <github@quasiparticle.net>2023-02-04 23:16:30 +0100
committerpennae <82953136+pennae@users.noreply.github.com>2023-02-21 18:19:00 +0100
commit4d3aef762f3c77f0e4040fcc66298b46694a7f6a (patch)
tree92e4faac5a8f95b7ffabc6f58dfd046ec38288fd /nixos/lib/make-options-doc
parent6c182075bb453792683369eca2bdc630cb551a91 (diff)
downloadnixpkgs-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.nix11
-rw-r--r--nixos/lib/make-options-doc/generateDoc.py33
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('<', '&lt;').replace('>', '&gt;'))
-        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}`')