# config [https://pkg.go.dev/git.gm6.ru/icewind/config](https://pkg.go.dev/git.gm6.ru/icewind/config) Минималистичный Go-пакет для загрузки и валидации конфигурации из YAML-файлов. Пакет решает простую, но часто встречающуюся задачу: - загрузить конфигурацию из файла или из `[]byte` - распарсить YAML в пользовательскую структуру - автоматически выполнить валидацию конфига после загрузки --- ## Возможности - 📄 Загрузка конфигурации из файла (`LoadFromFile`) - 💾 Загрузка конфигурации из памяти (`LoadFromData`) - 🔍 Валидация через пользовательский метод `Check()` - 🧩 Использование стандартного `gopkg.in/yaml.v3` - ⚡ Минимальный и прозрачный API без лишних зависимостей --- ## Установка ```bash go get git.gm6.ru/icewind/config ``` Объект данных конфига должен соотвутствовать интерфейсу ```go type IConfig interface { Check() error } ``` Этот метод будет автоматически вызван после успешного парсинга YAML. Если Check() возвращает ошибку — загрузка конфигурации считается неуспешной. ##Пример конфигурационного файла в формате YAML ```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 ``` ##Пример использования ```go 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) } } ```