我正在将 cobra 命令移至flags函数内,以便可以在其他命令中使用它。我可以看到命令,但是当我输入标志时它总是返回false。
以下是我的代码:
func NewCommand(ctx context.Context) *cobra.Command {
var opts ListOptions
cmd := &cobra.Command{
Use: "list",
Short: "List",
RunE: func(cmd *cobra.Command, args []string) error {
fmt.Println(args) // []
opts.refs = args
return List(ctx, gh, opts, os.Stdout)
},
}
cmd = GetCommandFlags(cmd, opts)
return cmd
}
// GetListCommandFlags for list
func GetCommandFlags(cmd *cobra.Command, opts ListOptions) *cobra.Command {
flags := cmd.Flags()
flags.BoolVar(&opts.IgnoreLatest, "ignore-latest", false, "Do not display latest")
flags.BoolVar(&opts.IgnoreOld, "ignore-old", false, "Do not display old data")
return cmd
}
所以当我输入以下命令时
data-check list --ignore-latest
的标志值--ignore-latest应该是true,但我得到的false是 args 中的值RunE。我在这里错过了什么吗?
GetCommandFlags是我想在其他命令中使用它的东西,我不想重复相同的标志。
暮色呼如
心有法竹
潇潇雨雨
相关分类