python 中的自定义帮助点击

Custom help in python click

默认情况下,click 添加了一个 --help 选项,该选项根据 click 命令的结构输出标准化的用法文本:

Usage: ...

Options: ...

Commands:
   ...
   ...

如何覆盖此行为以获得自定义帮助输出?我想做的是使用丰富的库输出自定义消息。

诀窍是创建一个 click.Group class 并覆盖 format_help 方法

class RichGroup(click.Group):
    def format_help(self, ctx, formatter):
        sio = io.StringIO()
        console = rich.Console(file=sio, force_terminal=True)
        console.print("Hello, [bold magenta]World[/bold magenta]!", ":vampire:")
        formatter.write(sio.getvalue())

@click.group(cls=RichGroup)
def cli():
    pass

要添加到已接受的答案中,如果您只需要命令的此自定义功能,您还可以子类化 click.Command

class HelpfulCmd(click.Command):
    def format_help(self, ctx, formatter):
        click.echo("My custom help message")

@click.command(cls=HelpfulCmd)
def mycommand():
    pass