Как извлечь зарегистрированную информацию?

Я использую кобру с моим приложением Golang. Как я могу получить список команд и значений, которые я зарегистрировал в Cobra.

Если я добавлю команду root, а затем команду DisplayName.

var Name = "sample_"
var rootCmd = &cobra.Command{Use: "Use help to find out more options"}
rootCmd.AddCommand(cmd.DisplayNameCommand(Name))

Смогу ли я узнать, каково значение имени в моей программе, с помощью какой-нибудь функции Cobra? В идеале я хочу получить доступ к этому значению в Name и использовать его для проверки логики.

1 ответ

Решение

Вы можете использовать значение, хранящееся в Name переменная для выполнения операций в вашей программе. Пример использования кобры:

var Name = "sample_"

var rootCmd = &cobra.Command{
    Use:   "hello",
    Short: "Example short description",
    Run:   func(cmd *cobra.Command, args []string) {
        // Do Stuff Here
    },
}

var echoCmd = &cobra.Command{
    Use:   "echo",
    Short: "Echo description",
    Run:   func(cmd *cobra.Command, args []string) {
        fmt.Printf("hello %s", Name)
    },
}

func init() {
    rootCmd.AddCommand(echoCmd)
}

func Execute() {
    if err := rootCmd.Execute(); err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

`

В приведенном выше коде вы можете видеть, что hello это команда root и echo это подкоманда Если вы делаете hello echo, это будет повторять значение sample_ который хранится в Name переменная.

Вы также можете сделать что-то вроде этого:

var echoCmd = &cobra.Command{
    Use:   "echo",
    Short: "Echo description",
    Run:   func(cmd *cobra.Command, args []string) {
        // Perform some logical operations
        if Name == "sample_" {
            fmt.Printf("hello %s", Name)
        } else {
            fmt.Println("Name did not match")
        }
    },
}

Чтобы узнать больше о том, как использовать кобру, вы также можете просмотреть мой проект по ссылке ниже.

https://github.com/bharath-srinivas/nephele

Надеюсь это поможет.

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