Reconf
Reconf — простая и гибкая библиотека для работы с конфигурациями в Go.
Установка
Для установки используйте команду:
go install github.com/themgmd/reconf@v0.0.3
Генерация конфигурации
- Для создания файлов конфигурации используем команду.
reconf generate template
По умолчанию файлы будут созданы в папке ./build/configs в корне вашего проекта.
Должно сгенерироваться 4 файла: values.yaml, values_development.yaml, values_staging.yaml, values_production.yaml
## Пример файла дефолтной конфигурации:
##
## File: values.yaml
## description: предназначен для описания конфигурации приложения
## значения задаются в двух блоках
## configs: значения не содержащие пароли и другую секрутную информацию
## secret: по ключу задаются ключи волта, в котором хранятся переменные
##
## в файлах values_development, values_staging, values_products - можно
## переопределить значение переменных конфигурации для конкретного окружения
##
config:
# http
http_port: 8080
# grpc
grpc_port: 8090
# postgres
postgres_max_conns: 50
postgres_min_conns: 10
secret:
# postgres
postgres_dsn: pg_dsn
- Далее необходимо сгенерировать файл с ключами переменных конфигурации
reconf generate keys
Сгенерируется файл config_gen.go в папке ./internal/config
// Пример:
package config
// Code generated by generator; DO NOT EDIT.
const (
PostgresMinConns = "postgres_min_conns"
HttpPort = "http_port"
GrpcPort = "grpc_port"
PostgresMaxConns = "postgres_max_conns"
PostgresDsn = "postgres_dsn"
)
Использование
- Устанавливаем библиотеку в проект
go get github.com/themgmd/reconf
- Пример кода
package main
import "github.com/themgmd/reconf"
func main() {
cfg := reconf.NewClient()
ctx = reconf.WithContext(context.Background(), cfg)
dsn := cfg.GetValue(config.PostgresDsn).String()
fmt.Println(dsn)
}