Как определить дочернюю команду, выполняемую из 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
}