【问题标题】:Click: How to get all options for a command for customizing help output?单击:如何获取用于自定义帮助输出的命令的所有选项?
【发布时间】:2020-06-30 18:47:10
【问题描述】:

假设我有一个命令,可以这样调用:myapp mycommand --myOption --myOtherOption。 我目前正在自定义myapp--help 输出。我找到了this SO question,这是一个很好的起点。

但我现在想做的是,动态地(所以不是硬编码)获取每个命令的选项并自定义其帮助输出。我搜索了 Click 文档,但找不到像 get_options() 这样的函数来获取命令的所有可用选项。 我知道可以通过覆盖format_options() 来自定义帮助选项输出,但为了做到这一点,我希望能够获得处理它们的选项,而不是硬编码它们。

有人知道怎么做吗?

在此先感谢

【问题讨论】:

    标签: python customization python-click


    【解决方案1】:

    我再次搜索文档并仔细查看并找到了解决方案。 command 类提供了一个 params 变量。

    但是,如果有人遇到这种情况:输入myapp mycommand --help 时如何自定义帮助输出。覆盖format_help() 只是(显然)更改myapp --help 的输出

    【讨论】:

    • 您可以为每个命令提供pydoc。 Click 将对其进行解析并将其转换为该特定命令的帮助消息。
    • @afterburner:是的,这就是我实际拥有的。我只是想给它设置样式,或者添加一些额外的部分(除了用法、选项和描述)。这可能吗?
    • 您可以覆盖单击Command 类来更改帮助输出,类似于覆盖Group 的方式。如果您想为多个命令执行此操作,您可以查看访问者模式之类的东西,以根据命令名称发送正确的帮助消息。
    • 感谢您的回答,这听起来很有趣。好吧,我的“愚蠢”问题很抱歉,但是:我已经覆盖了Command class 中的 format_help(在我的Group myapp 中)之类的函数。这(显然)只会改变myapp --help 的输出。是否有任何我不知道或如何启动的“子命令”特定命令类?
    • 组和命令是相似的,但是即使你从Group覆盖format_help,命令也有自己的format_help方法,所以你需要实现你自己的Command类覆盖它。即使您使用@cli.command(),它也使用默认的 Click 命令类。您需要像声明组时一样指定它
    猜你喜欢
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多