Reputation: 20842
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.
Upvotes: 8
Views: 2883
Reputation: 622
Since you are using click
package, I know two cool solutions:
click
CLI man page
.click
CLI help in md file
format.Upvotes: 3
Reputation: 1519
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)
Upvotes: 10