Skip to main content

Pre-commit hook to generate markdown documentation from argparse-based CLI scripts

Project description

argparse_to_md: Argparse to README.md

argparse_to_md tool helps developers of command-line tools written in Python keep the usage instructions in their README.md files up to date. It can automatically update usage instructions in README.md file based on argparse parsers defined in the code. It can be invoked as a pre-commit hook or as a standalone script.

How to use argparse_to_md:

  1. In your CLI tool, move creation of argparse.ArgumentParser into a separate function:
    import argparse
    
    def create_parser() -> argparse.ArgumentParser:
        parser = argparse.ArgumentParser(prog='mytool')
        parser.add_argument(...)
        return parser
    
    def main():
        parser = create_parser()
        parser.parse_args()
    
  2. In your README.md file, add a section where the usage would be described. Replace mytool with the fully qualified name of the module and create_parser with the name of the function which returns an argparse.ArgumentParser.
    ### Usage
    
    <!-- argparse_to_md:mytool:create_parser -->
    <!-- argparse_to_md_end -->
    
  3. Run argparse_to_md, either manually or as a pre-commit hook. The README.md file will be updated, the usage instructions will appear inside this section.
  4. Whenever you modify the parser in your code, re-run argparse_to_md, or let the pre-commit hook run. README.md will be updated with the new usage instructions.

Usage as a pre-commit hook

Add to your .pre-commit-config.yaml. This pre-commit hook will be triggered by changes to all Python or Markdown files, and it will edit README.md:

repos:
-   repo: https://github.com/igrr/argparse_to_md.git
    rev: v0.2.0
    hooks:
    -   id: argparse_to_md

        # By default, 'README.md' file will be processed.
        # If you need to modify the list of files, specify them in 'args'
        args: [--input=README.md, --input=README_CN.md]

If you need to adjust the list of files to be updated, specify them in args: as follows:

repos:
-   repo: https://github.com/igrr/argparse_to_md.git
    rev: v0.2.0
    hooks:
    -   id: argparse_to_md
        args: [--input=README.md, --input=README_CN.md]

Command-line usage

You can also use argparse_to_md from the command line:

Usage:

argparse_to_md [-h] [-i INPUT [INPUT ...]]
                          [--extra-sys-path EXTRA_SYS_PATH [EXTRA_SYS_PATH ...]]
                          [--check CHECK] [--version]

Optional arguments:

  • -i INPUT [INPUT ...], --input INPUT [INPUT ...]: Markdown file to update (can be specified multiple times).
  • --extra-sys-path EXTRA_SYS_PATH [EXTRA_SYS_PATH ...]: Extra paths to add to PYTHONPATH before loading the module
  • --check CHECK: Check if the files need to be updated, but don't modify them. Non-zero exit code is returned if any file needs to be updated.
  • --version: show program's version number and exit

Related projects

License

This tool is Copyright (c) 2024 Ivan Grokhotkov and distributed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

argparse_to_md-0.2.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

argparse_to_md-0.2.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file argparse_to_md-0.2.0.tar.gz.

File metadata

  • Download URL: argparse_to_md-0.2.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.4

File hashes

Hashes for argparse_to_md-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6c834b26e31c1d5723566699593481da7145c3d14d7f557b36e189285f2c14d6
MD5 5f39f86d860d5e68c34bb393eebfe6c4
BLAKE2b-256 ec083c4eb141e928d5deea03c2e749b14c04d83812d809977b00a49da98c2a39

See more details on using hashes here.

File details

Details for the file argparse_to_md-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for argparse_to_md-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c45afb866f7a012c2a1409b06649515f836fc15ba8e219d4dd0a95d1d9d367c1
MD5 c7a1774b9d5228d738ed3f8f4fba606a
BLAKE2b-256 4d0c27846a1ad3c8aa4b22a7353943db0510f0ecdfb82d7903d3331592a2f24f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page