config
https://pkg.go.dev/git.gm6.ru/icewind/config
Минималистичный Go-пакет для загрузки и валидации конфигурации из YAML-файлов.
Пакет решает простую, но часто встречающуюся задачу:
- загрузить конфигурацию из файла или из
[]byte - распарсить YAML в пользовательскую структуру
- автоматически выполнить валидацию конфига после загрузки
Возможности
- 📄 Загрузка конфигурации из файла (
LoadFromFile) - 💾 Загрузка конфигурации из памяти (
LoadFromData) - 🔍 Валидация через пользовательский метод
Check() - 🧩 Использование стандартного
gopkg.in/yaml.v3 - ⚡ Минимальный и прозрачный API без лишних зависимостей
Установка
go get git.gm6.ru/icewind/config
Описание
Объект данных конфига должен соотвутствовать интерфейсу
type IConfig interface {
Check() error
}
Этот метод будет автоматически вызван после успешного парсинга YAML. Если Check() возвращает ошибку — загрузка конфигурации считается неуспешной.
Пример конфигурационного файла в формате YAML
addrs:
- 127.0.0.1:8080
- 192.168.1.1:8080
- 172.16.0.1:8080
name: "Config version 1"
enabled: true
version: 1
Пример использования
package main
import (
"errors"
"git.gm6.ru/icewind/config"
)
type AppConfig struct {
Addrs []string `yaml:"addrs"`
Name string `yaml:"name"`
Enabled bool `yaml:"enabled"`
Version int `yaml:"version"`
}
func (c *AppConfig) Check() error {
if c.Version <= 0 {
return errors.New("version must be > 0")
}
if len(c.Addrs) == 0 {
return errors.New("addrs list must not be empty")
}
return nil
}
func main() {
var cfg AppConfig
if err := config.LoadFromFile("config.yaml", &cfg); err != nil {
panic(err)
}
}
Languages
Go
100%