diff --git a/docs/options.md b/docs/options.md index 05b3ed04..1326ae62 100644 --- a/docs/options.md +++ b/docs/options.md @@ -3,6 +3,20 @@ +## Table of Contents + +* [General Options](#general-options) +* [Update Options](#update-options) +* [Input Options](#input-options) +* [Output Options](#output-options) +* [Networking Options](#networking-options) +* [Downloader Options](#downloader-options) +* [Configuration Options](#configuration-options) +* [Authentication Options](#authentication-options) +* [Cookie Options](#cookie-options) +* [Selection Options](#selection-options) +* [Post-processing Options](#post-processing-options) + ## General Options: -h, --help Print this help message and exit --version Print program version and exit diff --git a/scripts/options.py b/scripts/options.py index c71a53ea..40a3bf17 100755 --- a/scripts/options.py +++ b/scripts/options.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# Copyright 2023 Mike Fährmann +# Copyright 2023-2026 Mike Fährmann # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as @@ -29,23 +29,36 @@ class Formatter(option.Formatter): pass +def repl(match): + cat = match[1].rstrip(":") + toc.append(f"* [{cat}](#{cat.lower().replace(' ', '-')})") + return f"## {cat}:" + + parser = option.build_parser() parser.formatter_class = Formatter parser.format_usage = lambda: "" +toc = [] opts = parser.format_help() -opts = re.sub(r"(?m)^(\w+.*)", "## \\1", opts) # group names to headings +opts = re.sub(r"(?m)^(\w+.*)", repl, opts) # group names to headings opts = opts.replace("\n ", "\n ") # indent by 4 - +toc = "\n".join(toc) SELF = "/".join(os.path.normpath(__file__).split(os.sep)[-2:]) PATH = (sys.argv[1] if len(sys.argv) > 1 else util.path("docs", "options.md")) with util.lazy(PATH) as fp: - fp.write(f"""# Command-Line Options + fp.write(f"""\ +# Command-Line Options -{opts}""") +## Table of Contents + +{toc} + +{opts}\ +""")