Files
config/README.md
Vladimir V Maksimov b400e55f69 alpha
2025-12-13 14:46:46 +03:00

88 lines
2.4 KiB
Markdown

# 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)
}
}
```