Documentation
¶
Overview ¶
Package configuration provides ability to initialize your custom configuration struct from: flags, environment variables, `default` tag, files (json, yaml)
Index ¶
- Constants
- Variables
- func FromEnvAndDefault(cfg any) error
- func NewDefaultProvider() defaultProvider
- func NewEnvProvider() envProvider
- func NewFlagProvider(opts ...FlagProviderOption) flagProvider
- func SetField(field reflect.StructField, val reflect.Value, valStr string) error
- func ToPtr[T any](val T) *T
- type Configurator
- type ConfiguratorOption
- type FieldSetter
- type FileProvider
- type FlagProviderOption
- type FlagSet
- type Provider
Constants ¶
const DefaultProviderName = `DefaultProvider`
const EnvProviderName = `EnvProvider`
const (
FlagProviderName = `FlagProvider`
)
const JSONFileProviderName = `JSONFileProvider`
Variables ¶
var ( ErrNoTag = errors.New("no tag") ErrTagNotUnique = errors.New("tag is not unique") ErrEmptyValue = errors.New("empty value") ErrNotAPointer = errors.New("not a pointer to a struct") ErrNoProviders = errors.New("no providers") ErrProviderNameCollision = errors.New("provider name collision") )
var ErrFileMustHaveJSONExt = errors.New("file must have .json extension")
Functions ¶
func FromEnvAndDefault ¶
FromEnvAndDefault is a shortcut for `New(cfg, NewEnvProvider(), NewDefaultProvider()).InitValues()`.
func NewDefaultProvider ¶
func NewDefaultProvider() defaultProvider
NewDefaultProvider creates new provider which sets values from `default` tag nolint:revive
func NewEnvProvider ¶
func NewEnvProvider() envProvider
NewEnvProvider creates provider which sets values from ENV variables (gets variable name from `env` tag) nolint:revive
func NewFlagProvider ¶
func NewFlagProvider(opts ...FlagProviderOption) flagProvider
NewFlagProvider creates a new provider to fetch data from flags like: --flag_name some_value nolint:revive
Types ¶
type Configurator ¶
type Configurator struct {
// contains filtered or unexported fields
}
func New ¶
func New( cfgPtr any, providers ...Provider, ) *Configurator
New creates a new instance of the Configurator.
func (*Configurator) InitValues ¶
func (c *Configurator) InitValues() error
InitValues sets values into struct field using given set of providers respecting their order: first defined -> first executed
func (*Configurator) SetOptions ¶
func (c *Configurator) SetOptions(options ...ConfiguratorOption) *Configurator
type ConfiguratorOption ¶
type ConfiguratorOption func(*Configurator)
ConfiguratorOption defines Option function for Configuration
func OnFailFnOpt ¶
func OnFailFnOpt(fn func(error)) ConfiguratorOption
OnFailFnOpt sets function which will be called when an error occurs during Configurator.applyProviders()
type FieldSetter ¶ added in v4.2.0
type FieldSetter interface {
SetField(field reflect.StructField, val reflect.Value, valStr string) error
}
FieldSetter interface
type FileProvider ¶ added in v4.4.0
type FileProvider struct {
// contains filtered or unexported fields
}
func NewJSONFileProvider ¶
func NewJSONFileProvider(fileName string) (fp *FileProvider)
NewJSONFileProvider creates new provider which reads values from JSON files.
func (*FileProvider) Init ¶ added in v4.4.0
func (fp *FileProvider) Init(_ any) error
func (*FileProvider) Name ¶ added in v4.4.0
func (fp *FileProvider) Name() string
func (*FileProvider) Provide ¶ added in v4.4.0
func (fp *FileProvider) Provide(field reflect.StructField, v reflect.Value) error
type FlagProviderOption ¶
type FlagProviderOption func(*flagProvider)
func WithFlagSet ¶
func WithFlagSet(s FlagSet) FlagProviderOption
WithFlagSet allows the flag.FlagSet to be provided to NewFlagProvider. This allows compatibility with other flag parsing utilities.