这个问题是关于点击包的:
Click 是一个 Python 包,用于以可组合的方式使用尽可能少的代码创建漂亮的命令行界面。它是“命令行界面创建工具包”。它是高度可配置的,但带有开箱即用的合理默认值。
它旨在使编写命令行工具的过程变得快速而有趣,同时还防止因无法实现预期的 CLI API 而导致的任何挫败感。
我想click.Option
在 my中添加一个click.Command
,这会改变该命令的其他参数的行为。考虑以下示例:
@click.option('--x', default=42, prompt=True)
@click.command
def cli_a(x):
print(x)
@click.option('--x', default=42, prompt=False)
@click.command
def cli_b(x):
print(x)
如果cli_a
在没有明确指定x
的情况下调用,则会提示用户提供一个值(或使用 ENTER 确认默认值)。如果cli_b
在不指定x
默认值的情况下调用,则在不提示用户的情况下使用。
我现在想添加一个标志click.Option
,允许用户在上述变体之一之间进行选择(在运行时)。因此,调用cli_c --i
的行为类似于cli_a
,调用cli_c
的行为类似于cli_b
.
@click.option('--i', is_flag=True, default=False, expose_value=False)
@click.option('--x', default=42, prompt=False)
@click.command
def cli_c(x):
print(x)
这对当前的 API 可行吗?可行吗?
类似的用例类似于anwser-all-confimation-prompts-with-yes标志。通常,如果 cli 工具应该由用户交互使用,并且通过脚本或类似的东西在自动化模式下使用,通常会出现这种情况。