Vladimir V Maksimov fe79e91a1b readme upd
2025-12-13 14:48:57 +03:00
2025-12-13 14:46:46 +03:00
2025-12-13 14:46:46 +03:00
2025-12-13 14:46:46 +03:00
2025-12-13 14:46:46 +03:00
2025-12-13 09:49:36 +00:00
2025-12-13 14:46:46 +03:00
2025-12-13 14:46:46 +03:00
2025-12-13 14:48:57 +03:00

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)
    }
}
Description
Описание интерфейса конфигурации, а так же инструменты для загрузки и разбора из формата YAML
Readme MIT 33 KiB
Languages
Go 100%