Skip to content

Latest commit

 

History

History
132 lines (96 loc) · 5.84 KB

README-ru.md

File metadata and controls

132 lines (96 loc) · 5.84 KB

ozzo-config

GoDoc Build Status Coverage

ozzo-config — это пакет Go для работы с конфигурациями. Он поддерживает

  • Чтение конфигуационных файлов JSON (с комментариями), YAML, и TOML;
  • Объединение нескольких конфигураций;
  • Доступ к любой части конфигурации;
  • Конфигурирование объектов с помощью частей конфигурации;
  • Расширение новыми форматами файлов.

Требования

Go 1.2 или выше.

Установка

Выполните следующие команды для установки:

go get github.com/go-ozzo/ozzo-config

С чего начать

Следующий фрагмент кода показывает, как можно использовать этот пакет.

package main

import (
    "fmt"
    "github.com/go-ozzo/ozzo-config"
)

func main() {
    // создаём объект Config
    c := config.New()

    // загружаем конфигурацию из строки JSON
    c.LoadJSON([]byte(`{
        "Version": "2.0",
        "Author": {
            "Name": "Foo",
            "Email": "bar@example.com"
        }
    }`))

    // получаем значение "Version", возвращает "1.0" если оно не определено в конфигурации
    version := c.GetString("Version", "1.0")

    var author struct {
        Name, Email string
    }
    // заполняем объект author из конфигурации "Author"
    c.Configure(&author, "Author")

    fmt.Println(version)
    fmt.Println(author.Name)
    fmt.Println(author.Email)
    // Вывод:
    // 2.0
    // Foo
    // bar@example.com
}

Загрузка конфигурации

Вы можете загрузить конфигурацию тремя способами:

c := config.New()

// загрузить из одного или нескольких файлов JSON, YAML или TOML.
// форматы файлов определяются по их расширениям: .json, .yaml, .yml, .toml
c.Load("app.json", "app.dev.json")

// загрузить из одной или нескольких JSON строк
c.LoadJSON([]byte(`{"Name": "abc"}`), []byte(`{"Age": 30}`))

// загрузить из одной или нескольких переменных
data1 := struct {
    Name string
} { "abc" }
data2 := struct {
    Age int
} { 30 }
c.SetData(data1, data2)

При загрузке из нескольких источников, конфигурация будет получена путем рекурсивного слияния их один за другим.

Доступ к конфигурации

Вы можете получить доступ к любой части конфигурации, используя один из методов Get, таких как Get(), GetString(), GetInt(). Эти методы требуют параметр пути в формате X.Y.Z, который обозначает место в конфигурации с ключами config["X"]["Y"]["Z"]. Если путь не соответствует значению в конфигурации, то возвращается нулевое значение или значение по умолчанию, если оно указано при вызове метода:

// Полчаем "Author.Email". Если "Author.Email" нет в конфигруации,
// получим значение по умолчанию "bar@example.com".
email := c.GetString("Author.Email", "bar@example.com")

Изменение конфигурации

Вы можете изменить любую часть конфигурации с использованием метода Set. Например, следующий код изменяет значение конфигурации config["Author"]["Email"]:

c.Set("Author.Email", "bar@example.com")

Конфигурирование объектов

Вы можете использовать конфигурацию, чтобы настроить свойства объекта. Например, кофигурация, соответствующая JSON структуре {"Name": "Foo", "Email": "bar@example.com"}, может быть использована для задания значений полям структуры Name и Email.

При настройке nil интерфейса, вы должны указать конкретный тип в конфигурации при момощи элемента type карты конфигурации. Перед этим, так как необходимо знать, как создавать экземпляр, тип должен быть зарегистрирован при помощи вызова Register().

Новые форматы файлов конфигруации

ozzo-config поддерживает три формата конфигурационных файлов: JSON (с комментариями), YAML и TOML. Для того, чтобы добавить поддержку нового формата файла, вы должны изменить переменную config.UnmarshalFuncMap, сопоставив новое расширение файла соответствующей функции демаршалинга.