Loading nixos/lib/make-options-doc/generateDoc.py +18 −14 Original line number Diff line number Diff line Loading @@ -21,11 +21,13 @@ parser.add_argument( args = parser.parse_args() # Pretty-print certain Nix types, like literal expressions. def render_types(obj): if '_type' not in obj: return obj _type = obj['_type'] class OptionsEncoder(json.JSONEncoder): def encode(self, obj): # Unpack literal expressions and other Nix types. # Don't escape the strings: they were escaped when initially serialized to JSON. if isinstance(obj, dict): _type = obj.get('_type') if _type is not None: if _type == 'literalExpression' or _type == 'literalDocBook': return obj['text'] Loading @@ -34,6 +36,8 @@ def render_types(obj): raise Exception(f'Unexpected type `{_type}` in {json.dumps(obj)}') return super().encode(obj) def generate_commonmark(options): for (name, value) in options.items(): print('##', name.replace('<', '<').replace('>', '>')) Loading @@ -49,14 +53,14 @@ def generate_commonmark(options): if 'default' in value: print('*_Default_*') print('```') print(json.dumps(value['default'], ensure_ascii=False, separators=(',', ':'))) 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'], ensure_ascii=False, separators=(',', ':'))) print(json.dumps(value['example'], cls=OptionsEncoder, ensure_ascii=False, separators=(',', ':'))) print('```') print() print() Loading @@ -76,7 +80,7 @@ def generate_asciidoc(options): print('Default::') print('+') print('----') print(json.dumps(value['default'], ensure_ascii=False, separators=(',', ':'))) print(json.dumps(value['default'], cls=OptionsEncoder, ensure_ascii=False, separators=(',', ':'))) print('----') print() else: Loading @@ -89,7 +93,7 @@ def generate_asciidoc(options): print('Example::') print('+') print('----') print(json.dumps(value['example'], ensure_ascii=False, separators=(',', ':'))) print(json.dumps(value['example'], cls=OptionsEncoder, ensure_ascii=False, separators=(',', ':'))) print('----') print() else: Loading @@ -97,7 +101,7 @@ def generate_asciidoc(options): print() with open(args.nix_options_path) as nix_options_json: options = json.load(nix_options_json, object_hook=render_types) options = json.load(nix_options_json) if args.format == 'commonmark': generate_commonmark(options) Loading Loading
nixos/lib/make-options-doc/generateDoc.py +18 −14 Original line number Diff line number Diff line Loading @@ -21,11 +21,13 @@ parser.add_argument( args = parser.parse_args() # Pretty-print certain Nix types, like literal expressions. def render_types(obj): if '_type' not in obj: return obj _type = obj['_type'] class OptionsEncoder(json.JSONEncoder): def encode(self, obj): # Unpack literal expressions and other Nix types. # Don't escape the strings: they were escaped when initially serialized to JSON. if isinstance(obj, dict): _type = obj.get('_type') if _type is not None: if _type == 'literalExpression' or _type == 'literalDocBook': return obj['text'] Loading @@ -34,6 +36,8 @@ def render_types(obj): raise Exception(f'Unexpected type `{_type}` in {json.dumps(obj)}') return super().encode(obj) def generate_commonmark(options): for (name, value) in options.items(): print('##', name.replace('<', '<').replace('>', '>')) Loading @@ -49,14 +53,14 @@ def generate_commonmark(options): if 'default' in value: print('*_Default_*') print('```') print(json.dumps(value['default'], ensure_ascii=False, separators=(',', ':'))) 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'], ensure_ascii=False, separators=(',', ':'))) print(json.dumps(value['example'], cls=OptionsEncoder, ensure_ascii=False, separators=(',', ':'))) print('```') print() print() Loading @@ -76,7 +80,7 @@ def generate_asciidoc(options): print('Default::') print('+') print('----') print(json.dumps(value['default'], ensure_ascii=False, separators=(',', ':'))) print(json.dumps(value['default'], cls=OptionsEncoder, ensure_ascii=False, separators=(',', ':'))) print('----') print() else: Loading @@ -89,7 +93,7 @@ def generate_asciidoc(options): print('Example::') print('+') print('----') print(json.dumps(value['example'], ensure_ascii=False, separators=(',', ':'))) print(json.dumps(value['example'], cls=OptionsEncoder, ensure_ascii=False, separators=(',', ':'))) print('----') print() else: Loading @@ -97,7 +101,7 @@ def generate_asciidoc(options): print() with open(args.nix_options_path) as nix_options_json: options = json.load(nix_options_json, object_hook=render_types) options = json.load(nix_options_json) if args.format == 'commonmark': generate_commonmark(options) Loading