Установить значение по умолчанию для флага Cobra с помощью Viper

#go #go-cobra #viper-go

#Вперед #go-cobra #viper-go

Вопрос:

Я работаю над приложением на основе Cobra в Go, и для одной из моих команд я определяю такой флаг:

 func init() {
    myCmd.Flags().StringVarP(amp;project, "project", "p", "defaultProject", "Project name")
}
 

У меня также есть настроенный Viper в моей корневой команде, который считывает некоторую конфигурацию из файла. Есть ли способ установить значение по умолчанию для флага с помощью Viper? Я пробовал это:

 func init() {
    myCmd.Flags().StringVarP(amp;project, "project", "p", viper.GetString("project"), "Project name")
}
 

Но, похоже, это не так, поскольку я получаю пустую строку, если опускаю флаг при вызове команды. Есть идеи? Заранее спасибо!

Комментарии:

1. Можете ли вы использовать метод Viper SetDefault ? ( github.com/spf13/viper/blob /… )

2. Я могу, но здесь это не так. Я хочу, чтобы значение моего флага возвращалось к моему значению конфигурации, если флаг опущен, и когда я вызываю свою команду с --help флагом, я хочу видеть значение моей конфигурации в конце строки использования, где написано (по умолчанию «….»)