configurator

package
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2023 License: MIT Imports: 9 Imported by: 0

README

Чтение конфигурации.

Компонент для считывания конфигурационных данных из конфиг файла или переменных окружения. Реализует интерфейс Configurator который доступен в контейнере объектов.

type Configurator interface {
	GetString(string) string
	GetBool(string) bool
	GetInt(string) int
	GetInt8(string) int8
	GetInt16(string) int16
	GetInt32(string) int32
	GetInt64(string) int64
	GetUint(string) uint
	GetUint8(string) uint8
	GetUint16(string) uint16
	GetUint32(string) uint32
	GetUint64(string) uint64
	GetFloat32(string) float32
	GetFloat64(string) float64
	GetTime(string) time.Time
	GetDuration(string) time.Duration
	GetIntSlice(string) []int
	GetStringSlice(string) []string
	GetStringMap(string) map[string]interface{}
	GetStringMapString(string) map[string]string
	GetStringMapStringSlice(string) map[string][]string
	GetSizeInBytes(string) uint

	SetDefault(string, interface{})
}
Объект конфигурации.
type Config struct {
	Path              string
	Name              string
	Type              string
	EnvKeyReplaceFrom string
	EnvKeyReplaceTo   string
}

Описание полей:

Поле Описание Значение по умолчанию
Path Путь до директории с конфиг файлом, этот параметр может быть передан только при помощи флага командной строки '--config.path' директория запуска приложения
Name Имя конфиг файлом, этот параметр может быть передан только при помощи флага командной строки '--config.name' config
Type Тип конфиг файлом, этот параметр может быть передан только при помощи флага командной строки '--config.type' yaml
EnvKeyReplaceFrom Символ который будет заменяться в названии поля в конфиг файле, для поиска переменной окружения, этот параметр возможно установить только в коде .
EnvKeyReplaceTo Символ на который будет заменяться символ из поля EnvKeyReplaceFrom, этот параметр возможно установить только в коде _

Пример: если в конфиг файле указан параметр

http:
   server:
       port: 8085

то в переменной окружение этот же параметр будет HTTP_SERVER_PORT=8085,

для получения этого параметра в методе конфигурации configurator.GetUint16("http.server.port").

параметры ищутся в следующем порядке, конфиг файл, если параметр не найден в конфиг файле, он ищется в переменных окружения

если конфиг файл не существует, то все параметры будут искаться только в переменных окружения

Documentation

Index

Constants

View Source
const (
	ConfigPathFieldName = "config.path"
	ConfigNameFieldName = "config.name"
	ConfigTypeFieldName = "config.type"

	ConfigPathDefault        = "."
	ConfigNameDefault        = "config"
	ConfigTypeDefault        = "yaml"
	EnvKeyReplaceFromDefault = "."
	EnvKeyReplaceToDefault   = "_"
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		closer.OsSignalComponent,
	},
	Constructor: func(container container.Container) error {
		return container.Provides(
			NewConfig,
			New,
		)
	},
	BindFlags: func(flagSet *pflag.FlagSet, container container.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.StringVar(&config.Path, ConfigPathFieldName, ConfigPathDefault, "path to the directory where the config file is located")
			flagSet.StringVar(&config.Name, ConfigNameFieldName, ConfigNameDefault, "config file name")
			flagSet.StringVar(&config.Type, ConfigTypeFieldName, ConfigTypeDefault, "config file format")
		})
	},
}

Functions

This section is empty.

Types

type Config

type Config struct {
	Path              string
	Name              string
	Type              string
	EnvKeyReplaceFrom string
	EnvKeyReplaceTo   string
}

func Configuration

func Configuration(config *Config) *Config

func NewConfig

func NewConfig() *Config

type Configurator

type Configurator interface {
	GetString(string) string
	GetBool(string) bool
	GetInt(string) int
	GetInt8(string) int8
	GetInt16(string) int16
	GetInt32(string) int32
	GetInt64(string) int64
	GetUint(string) uint
	GetUint8(string) uint8
	GetUint16(string) uint16
	GetUint32(string) uint32
	GetUint64(string) uint64
	GetFloat32(string) float32
	GetFloat64(string) float64
	GetTime(string) time.Time
	GetDuration(string) time.Duration
	GetIntSlice(string) []int
	GetStringSlice(string) []string
	GetStringMap(string) map[string]interface{}
	GetStringMapString(string) map[string]string
	GetStringMapStringSlice(string) map[string][]string
	GetSizeInBytes(string) uint

	SetDefault(string, interface{})

	ReadConfig() error
}

Configurator : General interface for the application configurator.

func New

func New(config *Config) (Configurator, error)

type ReConfiguration

type ReConfiguration interface {
	Registration(components ...ReConfigurationComponent)
}

type ReConfigurationComponent

type ReConfigurationComponent interface {
	ReConfiguration(configurator Configurator) error
}

type ReConfigurationFunc

type ReConfigurationFunc func(configurator Configurator) error

func (ReConfigurationFunc) ReConfiguration

func (r ReConfigurationFunc) ReConfiguration(configurator Configurator) error

type ViperDecorator

type ViperDecorator struct {
	*viper.Viper
	// contains filtered or unexported fields
}

func NewViperDecorator

func NewViperDecorator(config *Config) (*ViperDecorator, error)

func NewViperDecoratorWithConfiguration

func NewViperDecoratorWithConfiguration(config *Config) (*ViperDecorator, error)

func (*ViperDecorator) GetFloat32

func (v *ViperDecorator) GetFloat32(key string) float32

func (*ViperDecorator) GetInt16

func (v *ViperDecorator) GetInt16(key string) int16

func (*ViperDecorator) GetInt8

func (v *ViperDecorator) GetInt8(key string) int8

func (*ViperDecorator) GetUint16

func (v *ViperDecorator) GetUint16(key string) uint16

func (*ViperDecorator) GetUint8

func (v *ViperDecorator) GetUint8(key string) uint8

func (*ViperDecorator) ReadConfig

func (v *ViperDecorator) ReadConfig() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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