Automatically generate all help documentation for Click commands

Question:

Is there a way to generate (and export) help documentation using click for all commands and subcommands?

For example,

cli --help all --destination help-docs.txt

would generate help for commands and subcommands following the

cli command subcommand

format and put them into the help-docs.txt file.

The only way I can think that I would accomplish this is to use

cli command subcommand --help

on every subcommand that I wanted to generate help for and cat the output to a file, but it would be nice if there where an easier way to accomplish this using Click --help functionality.

Asked By: scottlittle

||

Answers:

This code will do for Click 7, using mostly documented APIs. You’d basically call recursive_help somewhere, e.g. as a separate subcommand, and pass it your top-level group object.

def recursive_help(cmd, parent=None):
    ctx = click.core.Context(cmd, info_name=cmd.name, parent=parent)
    print(cmd.get_help(ctx))
    print()
    commands = getattr(cmd, 'commands', {})
    for sub in commands.values():
        recursive_help(sub, ctx)

Update 2019-10-05:
one way to use this, assuming cli is a click.group, would be:

@cli.command()
def dumphelp():
    recursive_help(cli)
Answered By: fpbhb

Since you are using click package, I know two cool solutions:

  1. Is to use click-man to auto-generate Python click CLI man page.
  2. Is to use md-click to auto-generate Python click CLI help in md file format.
Answered By: J.M.