【问题标题】:Golang CLI cobra count flagGolang CLI 眼镜蛇计数标志
【发布时间】:2021-02-02 22:20:29
【问题描述】:

我想定义一个 CLI 标志来计算它出现的次数。

例如,让我们用它的简写 -v 来定义标志 --verbose

# verbose value should be 0
> myCmd

# verbose value should be 1
> myCmd -v

# verbose value should be 2
> myCmd -vv

# ...

有没有内置的方法来实现它?

【问题讨论】:

    标签: go command-line-interface go-cobra


    【解决方案1】:

    来自https://github.com/spf13/cobra:“标志功能由 pflag 库提供”

    pflag 库中有几个用于计数标志的选项,记录在:https://godoc.org/github.com/spf13/pflag#Count

    可以展示一个跨越许多文件的长示例,但关键是使用类似这样的东西(在这种情况下,“run”是 cobra 命令):

    runCmd.Flags().CountP("verbose", "v", "counted verbosity")
    

    要稍后在 runCmd 的 Run 函数中检索该值,请使用以下命令:

    verbosity, _ := cmd.Flags().GetCount("verbose")
    

    变量详细程度将是一个包含重复次数的 int。

    在该示例中,我使用了 pflag 的 CountP 版本,它允许提供长标志名和短标志名(我认为这是您希望找到的)。

    【讨论】:

    • 继续提问,因为我也想这样做:将verbosity 值暴露给命令执行调用的函数的惯用方法是什么?有时那些被调用的函数在不同的包中。该值应仅在命令的生命周期内存在,而不应保留在配置文件等中。
    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 2021-05-20
    • 2023-03-15
    • 1970-01-01
    • 2014-12-12
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多