Как определить дочернюю команду, выполняемую из root.go в кобре

Я создал простое приложение CLI, которое имеет только две дочерние команды (init а также version) в Go используя каркас кобры. У меня есть требование определить, какая дочерняя команда выполняется root.go и сделать какую-то задачу, если это version команда. Как мне этого добиться? Пожалуйста, найдите исходный код root.go ниже.

package cmd

import (
    "os"
    "github.com/renstrom/dedent"
    "github.com/spf13/cobra"
)

var (
    rootLongDesc = dedent.Dedent(`
    My sample App
    `)
)

var RootCmd = &cobra.Command{
    Use:   "app",
    Short: "sample App",
    Long:  rootLongDesc,
}

func Execute() {
    RootCmd.AddCommand(InitCmd)
    RootCmd.AddCommand(versionCmd)
    if err := RootCmd.Execute(); err != nil {
        os.Exit(-1)
    }
}

func init() {
    cobra.OnInitialize(InitConfig)
    cobra.EnableCommandSorting = false
    RootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "Enable verbose mode")
}

func InitConfig() {

    // Need to catch that the `version` child command being executed and do some task

}

0 ответов

Другие вопросы по тегам