Основная информация: я создал приложение go и использовал для него Cobra. Cobra использует Viper для параметров и флагов командной строки.
У меня есть команда listen с привязкой флага, и я хочу настроить ее в файле yaml.
Код:
Функция init команды listen выглядит так:
func init() {
RootCmd.AddCommand(listenCmd)
listenCmd.Flags().StringP("bind", "b", ":50051", "Provide bind definition")
viper.BindPFlag("bind", listenCmd.Flags().Lookup("bind"))
}
Код моего приложения находится по адресу https://github.com/sascha-andres/go-logsink < / а>
Проблема:
Когда я вызываю приложение с listen --bind "bla"
, флаг устанавливается правильно на bla
, но я не нашел способа добиться этого с помощью файла YAML, расположенного в моем домашнем каталоге.
Попытка файлов конфигурации:
---
connect:
bind: "bla"
а также
---
bind: "bla"
В обоих случаях файл конфигурации был найден, но флаг имел не ожидаемое значение, а значение по умолчанию.
Как мне написать файл конфигурации, чтобы флаг был установлен правильно?
viper.GetString()
- и в этом вопросе есть только ссылка на репозиторий, в котором больше нет рассматриваемого кода. - person WGH   schedule 09.07.2018