python 点击命令的详细帮助

python click detailed help for commands

有没有办法为点击命令获取单独的详细帮助?例如,为该命令打印 options/arguments。

此 cli 的示例:

import click

@click.group()
def cli():
    pass

@cli.command()
@click.argument('arg1')
@click.option('--option1', default=1)
def cmd1(arg1):
    print(arg1)

if __name__ == '__main__':
    cli()

默认帮助只给出了这个:

> python cli.py --help

Usage: cli.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  cmd1

我想要这样的东西:

> python cli.py --help cmd1

...
Command cmd1
Arguments:
    arg1
Options:
    --option1
....

这可能吗?

如果你把 --help 放在命令后面,你会得到你想要的。

python cli.py cmd1 --help

测试代码:

import click

@click.group()
def cli():
    pass

@cli.command()
@click.argument('arg1')
@click.option('--option1', default=1)
def cmd1(arg1):
    print(arg1)


if __name__ == "__main__":
    commands = (
        'cmd1 --help',
        '--help',
        '',
    )

    import sys, time

    time.sleep(1)
    print('Click Version: {}'.format(click.__version__))
    print('Python Version: {}'.format(sys.version))
    for cmd in commands:
        try:
            time.sleep(0.1)
            print('-----------')
            print('> ' + cmd)
            time.sleep(0.1)
            cli(cmd.split())

        except BaseException as exc:
            if str(exc) != '0' and \
                    not isinstance(exc, (click.ClickException, SystemExit)):
                raise

结果:

Click Version: 6.7
Python Version: 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]
-----------
> cmd1 --help
Usage: test.py cmd1 [OPTIONS] ARG1

Options:
  --option1 INTEGER
  --help             Show this message and exit.
-----------
> --help
Usage: test.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  cmd1
-----------
> 
Usage: test.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  cmd1