Я хочу иметь возможность следующих вызовов cmd в инструменте cli, который я строю в go
, используя cobra
:
$ mytool envs apps compare
$ mytool envs vars compare
Поэтому я создаю команды и выполняю привязки следующим образом :
rootCmd.AddCommand(envsCmd)
envsCmd.AddCommand(appsCmd)
envsCmd.AddCommand(varsCmd)
varsCmd.AddCommand(compareCmd)
appsCmd.AddCommand(compareCmd)
Однако, когда проверяется родительский элемент подкоманды compare
, она всегда оказывается apps
var compareCmd = &cobra.Command{
Hidden: false,
Use: "compare",
Short: "",
Long: ``,
RunE: func(cmd *cobra.Command, args []string) error {
fmt.Println(cmd.Parent().Use)
Выше всегда печатается apps
независимо от того, если я вызову
$ mytool envs apps compare
или
$ mytool envs vars compare
Должен ли я предположить, что то, чего я хочу достичь, невозможно, по крайней мере, с использованием cobra
?