Я перемещаю свою команду кобры 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
как значение в RunE
аргументах. Я что-то здесь упускаю?
GetCommandFlags
- это то, что я хочу использовать в других командах, я не хочу повторять те же флаги.