Генерация загрузчика настроек
#
НачалоВ Swipe есть возможность сгенерировать загрузку настроек из переменных среды:
Структура конфигурации:
package example
type Config struct { Database Database}
type Database struct { Host string Username string Password string}
Файл настроек Swipe:
// +build swipe
package config
import "gitlab.com/example/example/pkg/swipe/config"
func swipe() { config.Config( config.Environment( &Config{}, ), )}
Swipe сгенерирует функцию загрузки func LoadConfig() (cfg *Config, errs []error)
#
Настройки#
Изменение имени метода загрузки настроекconfig.FuncName
используется для того, чтобы изменить
имя функции загрузчика переменных среды.
// +build swipe
package config
import "gitlab.com/example/example/pkg/swipe/config"
func swipe() { config.Config( config.Environment( &Config{}, config.FuncName("Load"), ), )}
#
Генерация markdown документацииconfig.EnableDoc
используется для того, чтобы включить
генерацию документации markdown.
// +build swipe
package config
import "gitlab.com/example/example/pkg/swipe/config"
func swipe() { config.Config( config.Environment( &Config{}, config.FuncName("Load"), config.EnableDoc(), ), )}
Swipe сгенерирует документацию рядом с файлом опций,
если вы хотите изменить расположение то можете использовать
опцию config.OutputDoc
:
// +build swipe
package config
import "gitlab.com/example/example/pkg/swipe/config"
func swipe() { config.Config( config.Environment( &Config{}, config.FuncName("Load"), config.EnableDoc(), config.OutputDoc("./docs"), ), )}
tip
Путь будет учитываться от корня проекта gitlab.com/example/example
#
Теги структурыSwipe использует идиоматические значения по умолчанию для генерации имен переменных среды из имен полей Go. Чтобы переопределить значения по умолчанию, используйте следующие необязательные теги полей структуры:
Тег | Описание |
---|---|
env:"env_name" | Устанавливает имя переменной среды |
env:",required" | Обязательное поле, пустые значения не допустимы |
env:",required,use_zero" | Обязательное поле, пустые значения допустимы |
env:",use_flag" | Использовать вместо переменной среды флаг из консоли |
env:",desc:text | Описания для генерации markdown документации |
info
Переменная среды генерируется в верхнем регистре, вложенные поля структуры разделяться через _
.