Documentation
¶
Overview ¶
Package cfgenv - Go package for loading config structs from environment vars
Index ¶
- func Example(w io.Writer, cfg any, options ...any) error
- func ExampleOf[T any](w io.Writer, options ...any) error
- func Load(cfg any, options ...any) error
- func LoadAs[T any](options ...any) (*T, error)
- func Write(w io.Writer, cfg any, options ...any) error
- type CustomSetterOption
- type Decoder
- type EnvReader
- func NewEnvFileReader(f io.Reader, errHandler func(err error)) EnvReader
- func NewEnvReader() EnvReader
- func NewFlagReader(nameConverter FlagNameConverter, useDefaults bool) EnvReader
- func NewFlagSetReader(fs *flag.FlagSet, nameConverter FlagNameConverter, useDefaults bool) EnvReader
- func NewMultiEnvReader(readers ...EnvReader) EnvReader
- type ExpandOption
- type FlagNameConverter
- type MapEnvReader
- type NamingOption
- type PrefixOption
- type SeparatorOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Example ¶
Example writes an example of the config
the supplied cfg arg must be a pointer to a struct
Use any options (such as PrefixOption, SeparatorOption, NamingOption or multiple CustomSetterOption) to alter loading behaviour
func ExampleOf ¶
ExampleOf writes an example of the specified T config
the type of T must be a struct
Use any options (such as PrefixOption, SeparatorOption, NamingOption or multiple CustomSetterOption) to alter loading behaviour
func Load ¶
Load loads a config struct from environment vars
the supplied cfg arg must be a pointer to a struct
Use any options (such as PrefixOption, SeparatorOption, NamingOption, EnvReader, Decoder or multiple CustomSetterOption) to alter loading behaviour
Types ¶
type CustomSetterOption ¶
type CustomSetterOption interface {
// IsApplicable should return true if the fld type is supported by this custom setter
IsApplicable(fld reflect.StructField) bool
// Set sets the field value `v` using the environment var `raw` value
Set(fld reflect.StructField, v reflect.Value, raw string, present bool) error
}
CustomSetterOption is an option that can be passed to Load or LoadAs and provides support for reading additional struct field types
func NewDatetimeSetter ¶
func NewDatetimeSetter(format string) CustomSetterOption
NewDatetimeSetter creates a CustomSetterOption that can be passed to Load or LoadAs and provides support for reading time.Time fields
func NewDurationSetter ¶ added in v1.3.0
func NewDurationSetter() CustomSetterOption
NewDurationSetter creates a CustomSetterOption that can be passed to Load or LoadAs and provides support for reading time.Duration fields
type Decoder ¶ added in v1.3.0
type Decoder interface {
// Encoding returns the encoding (e.g. "base64") that this Decoder supports
Encoding() string
// Decode returns the decoded value
Decode(value string) (string, error)
}
Decoder is an option that can be passed to Load or LoadAs and provides support for decoding values
Values that are encoded can be denoted with field tags, e.g.
type MyConfig struct {
Key string `env:"encoding=base64"`
}
func NewBase64Decoder ¶ added in v1.3.0
func NewBase64Decoder() Decoder
NewBase64Decoder returns a new Decoder for decoding base64
func NewBase64UrlDecoder ¶ added in v1.3.0
func NewBase64UrlDecoder() Decoder
NewBase64UrlDecoder returns a new Decoder for decoding base64url
func NewRawBase64Decoder ¶ added in v1.3.0
func NewRawBase64Decoder() Decoder
NewRawBase64Decoder returns a new Decoder for decoding raw base64 (no padding)
func NewRawBase64UrlDecoder ¶ added in v1.3.0
func NewRawBase64UrlDecoder() Decoder
NewRawBase64UrlDecoder returns a new Decoder for decoding raw base64url (no padding)
type EnvReader ¶ added in v1.2.0
type EnvReader interface {
// LookupEnv see os.LookupEnv
LookupEnv(key string) (string, bool)
// Environ see os.Environ
Environ() []string
}
EnvReader is an option that can be passed to Load or LoadAs an abstraction around reading environment variables fom various sources
func NewEnvFileReader ¶ added in v1.2.0
NewEnvFileReader creates a new EnvReader that reads from a file (or any other io.Reader)
func NewEnvReader ¶ added in v1.4.0
func NewEnvReader() EnvReader
NewEnvReader creates a new EnvReader that reads from environment vars using os.LookupEnv and os.Environ
func NewFlagReader ¶ added in v1.4.0
func NewFlagReader(nameConverter FlagNameConverter, useDefaults bool) EnvReader
NewFlagReader creates a new EnvReader that reads from flags (i.e. flag.CommandLine)
If flag names differ from env var names pass a nameConverter arg or nil if no name conversion is needed
The useDefaults args determines whether flag defaults are used
func NewFlagSetReader ¶ added in v1.4.0
func NewFlagSetReader(fs *flag.FlagSet, nameConverter FlagNameConverter, useDefaults bool) EnvReader
NewFlagSetReader creates a new EnvReader that reads from flags from the provided *flag.FlagSet
If flag names differ from env var names pass a nameConverter arg or nil if no name conversion is needed
The useDefaults args determines whether flag defaults are used
func NewMultiEnvReader ¶ added in v1.4.0
NewMultiEnvReader creates an EnvReader that reads environment vars from multiple EnvReader's e.g. MapEnvReader, NewEnvReader, NewEnvFileReader, NewFlagReader
when calling LookupEnv, it successively tries all the provided readers - returning the first found
When call Environ, it merges all environs into one
type ExpandOption ¶ added in v1.1.0
type ExpandOption interface {
// Expand expands the env var value s
Expand(s string, er EnvReader) string
}
ExpandOption is an option that can be passed to Load or LoadAs and provides support for expanding environment var values like...
FOO=${BAR}
func Expand ¶ added in v1.1.0
func Expand(lookups ...map[string]string) ExpandOption
Expand creates a default ExpandOption (for use in Load / LoadAs)
Any supplied lookup maps are checked first - if a given env var name, e.g. "${FOO}", is not found in lookups then the value is taken from env var
type FlagNameConverter ¶ added in v1.4.0
type FlagNameConverter interface {
ToFlagName(envKey string) string
ToEnvName(flagName string) string
}
FlagNameConverter is an interface that can be used with NewFlagReader and converts env var names to flag names or vice versa
type MapEnvReader ¶ added in v1.3.0
MapEnvReader is a map[string]string that implements the EnvReader interface
func (MapEnvReader) Environ ¶ added in v1.3.0
func (m MapEnvReader) Environ() []string
type NamingOption ¶
type NamingOption interface {
BuildName(prefix string, separator string, fld reflect.StructField, overrideName string) string
}
NamingOption is an option that can be passed to Load or LoadAs and provides a means of overriding how env var names are deduced
type PrefixOption ¶
type PrefixOption interface {
// GetPrefix returns the prefix for all env var names
GetPrefix() string
}
PrefixOption is an option that can be passed to Load or LoadAs and provides a prefix for all env var names
func NewPrefix ¶
func NewPrefix(prefix string) PrefixOption
NewPrefix creates a new PrefixOption with the specified prefix
type SeparatorOption ¶
type SeparatorOption interface {
// GetSeparator returns the separator to be used between prefixes used in env var names
GetSeparator() string
}
SeparatorOption is an option that can be passed to Load or LoadAs and provides the separator to be used between prefixes used in env var names
func NewSeparator ¶
func NewSeparator(separator string) SeparatorOption
NewSeparator creates a new NewSeparator with the specified separator
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
_examples
|
|
|
basic
command
|
|
|
custom_setter_option
command
|
|
|
expand_option
command
|
|
|
flags_example
command
|
|
|
naming_option
command
|
|
|
prefix_option
command
|
|
|
readme
command
|
|
|
separator_option
command
|
|
|
write_example
command
|