Перейти к основному содержимому
Version: 3.0.0

Генерация загрузчика настроек

Начало#

В 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

Переменная среды генерируется в верхнем регистре, вложенные поля структуры разделяться через _.