【发布时间】:2021-11-23 14:29:15
【问题描述】:
我有一个cobra 命令
var mycommandCmd = &cobra.Command{
Use: "mycommand",
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
viper.BindPFlags(cmd.Flags())
和一个子命令
var mysubcommandCmd = &cobra.Command{
Use: "mysubcommand",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
viper.BindPFlags(cmd.Flags())
我当然是绑定在一起的
mycommandCmd.AddCommand(mysubcommandCmd)
我也有他们两个的标志
mycommandCmd.PersistentFlags().BoolP("foo", "", true, "Whether to foo")
mysubcommandCmd.Flags().BoolP("foobar", "", true, "Whether to foobar")
我的问题如下:
假设结束 go 二进制文件被命名为 prog,是否有一个 (cobra / viper) 内置方法来检查在子命令调用期间是否实际传递了任何标志?
即我如何以编程方式区分这个
prog mycommand mysubcommand --foobar
还有这个
prog mycommand mysubcommand
检查默认标志值当然不会起作用(并且不会根据标志编号进行缩放)
【问题讨论】: