reconf

package module
v0.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2025 License: MIT Imports: 10 Imported by: 0

README

Reconf

Reconf — простая и гибкая библиотека для работы с конфигурациями в Go.

Установка

Для установки используйте команду:

go install github.com/themgmd/reconf@v0.0.3

Генерация конфигурации

  1. Для создания файлов конфигурации используем команду.
reconf generate template

По умолчанию файлы будут созданы в папке ./build/configs в корне вашего проекта.
Должно сгенерироваться 4 файла: values.yaml, values_development.yaml, values_staging.yaml, values_production.yaml

## Пример файла дефолтной конфигурации:

##
##  File: values.yaml
##  description: предназначен для описания конфигурации приложения
##  значения задаются в двух блоках
##  configs: значения не содержащие пароли и другую секрутную информацию
##  secret: по ключу задаются ключи волта, в котором хранятся переменные
##
##  в файлах values_development, values_staging, values_products - можно
##  переопределить значение переменных конфигурации для конкретного окружения
##

config:
  # http
  http_port: 8080

  # grpc
  grpc_port: 8090

  # postgres
  postgres_max_conns: 50
  postgres_min_conns: 10

secret:
  # postgres
  postgres_dsn: pg_dsn
  1. Далее необходимо сгенерировать файл с ключами переменных конфигурации
reconf generate keys

Сгенерируется файл config_gen.go в папке ./internal/config

// Пример:

package config

// Code generated by generator; DO NOT EDIT.

const (
	PostgresMinConns = "postgres_min_conns"
	HttpPort         = "http_port"
	GrpcPort         = "grpc_port"
	PostgresMaxConns = "postgres_max_conns"

	PostgresDsn = "postgres_dsn"
)

Использование

  1. Устанавливаем библиотеку в проект
go get github.com/themgmd/reconf
  1. Пример кода
package main

import "github.com/themgmd/reconf"

func main() {
	cfg := reconf.NewClient()
	ctx = reconf.WithContext(context.Background(), cfg)

	dsn := cfg.GetValue(config.PostgresDsn).String()
	fmt.Println(dsn)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithContext

func WithContext(ctx context.Context, cfg Client) context.Context

WithContext обернуть конфиг в контекст

Types

type Client

type Client interface {
	GetValue(ctx context.Context, name string) Valuer
}

Client .

func FromContext

func FromContext(ctx context.Context) (Client, error)

FromContext достать конфиг из контекста если в конфиге нет контекста создаем новый и возвращаем

func NewClient

func NewClient() (Client, error)

NewClient new configs client

type ConfigClient

type ConfigClient struct {
	// contains filtered or unexported fields
}

ConfigClient .

func (*ConfigClient) GetValue

func (c *ConfigClient) GetValue(ctx context.Context, name string) Valuer

GetValue - receive configs variable

func (*ConfigClient) SetSecretClient added in v0.0.4

func (c *ConfigClient) SetSecretClient(secret Secret)

SetSecretClient устанавливает клиент секретов

type Secret added in v0.0.4

type Secret interface {
	GetValue(ctx context.Context, key string) (string, error)
}

Secret хранилище секретов

type Value

type Value struct {
	// contains filtered or unexported fields
}

Value .

func (*Value) Bool

func (v *Value) Bool() bool

Bool возвращает значение как bool

func (*Value) Float32

func (v *Value) Float32() float32

Float32 возвращает значение как float32

func (*Value) Float64

func (v *Value) Float64() float64

Float64 возвращает значение как float64

func (*Value) Int

func (v *Value) Int() int

Int возвращает значение как int

func (*Value) Int32

func (v *Value) Int32() int32

Int32 возвращает значение как int32

func (*Value) Int64

func (v *Value) Int64() int64

Int64 возвращает значение как int64

func (*Value) IsNil

func (v *Value) IsNil() bool

IsNil .

func (*Value) String

func (v *Value) String() string

String возвращает значение как string

func (*Value) UnmarshalYAML

func (v *Value) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML Метод для yaml.Unmarshaler

type Valuer

type Valuer interface {
	yaml.Unmarshaler

	IsNil() bool
	String() string
	Int() int
	Int32() int32
	Int64() int64
	Bool() bool
	Float64() float64
	Float32() float32
}

Valuer configs value

Directories

Path Synopsis
cmd
reconf command
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL