Documentation
¶
Overview ¶
DigiStratum GoLib - Config
Index ¶
- Constants
- func NewConfigItem(name string) *configItem
- type CaptureFunc
- type Config
- func (r *Config) Dereference(referenceConfig ConfigIfc) int
- func (r *Config) DereferenceAll(referenceConfigs ...ConfigIfc) int
- func (r *Config) DereferenceLoop(maxLoops int, referenceConfig ConfigIfc) bool
- func (r Config) DereferenceString(str string) *string
- func (r Config) GetInverseSubsetConfig(prefix string) *Config
- func (r Config) GetSubsetConfig(prefix string) *Config
- func (r Config) GetSubsetKeys(keys *[]string) *Config
- func (r *Config) MergeConfig(mergeCfg ConfigIfc) *Config
- type ConfigIfc
- type ConfigItemIfc
- type Configurable
- func (r *Configurable) AddConfigItems(configItems ...ConfigItemIfc) *Configurable
- func (r *Configurable) Configure(config ConfigIfc) error
- func (r *Configurable) GetConfig() *Config
- func (r *Configurable) GetMissingConfigs() []string
- func (r *Configurable) HasMissingConfigs() bool
- func (r *Configurable) Start() error
- type ConfigurableIfc
- type SubsetFunc
- type ValidateFunc
Constants ¶
const MAX_REFERENCE_DEPTH = 100
Prevent runaway processes with absurd boundaries with an absolute maximum on loop count
Variables ¶
This section is empty.
Functions ¶
func NewConfigItem ¶
func NewConfigItem(name string) *configItem
Types ¶
type CaptureFunc ¶
type Config ¶
Config embeds a HashMap so that we can extend it
func (*Config) Dereference ¶
Dereference any values we have that %reference% keys in the referenceConfig returns count of references substituted
func (*Config) DereferenceAll ¶
Dereference against a list of other referenceConfigs
func (*Config) DereferenceLoop ¶
Dereference until result comes back 0 or maxLoops iterations are completed Returns true if fully dereferenced, false, if more refereces may be hiding
func (Config) DereferenceString ¶
Dereference any %key% references to our own keys in the supplied string returns dereferenced string
func (Config) GetInverseSubsetConfig ¶
Get configuration datum whose keys DO NOT begin with the prefix... We also strip the prefix off leaving just the interesting parts
func (Config) GetSubsetConfig ¶
Get configuration datum whose keys begin with the prefix... We also strip the prefix off leaving just the interesting parts
func (Config) GetSubsetKeys ¶
Get configuration datum matching the specified keys, returned as a new Config pointer
func (*Config) MergeConfig ¶
Merge configuration data
type ConfigIfc ¶
type ConfigIfc interface {
// ref: https://www.geeksforgeeks.org/embedding-interfaces-in-golang/
hashmap.HashMapIfc
MergeConfig(mergeCfg ConfigIfc) *Config
GetSubsetConfig(prefix string) *Config
GetSubsetKeys(keys *[]string) *Config
GetInverseSubsetConfig(prefix string) *Config
DereferenceString(str string) *string
Dereference(referenceConfig ConfigIfc) int
DereferenceAll(referenceConfigs ...ConfigIfc) int
DereferenceLoop(maxLoops int, referenceConfig ConfigIfc) bool
}
type ConfigItemIfc ¶
type ConfigItemIfc interface {
GetName() string
SetRequired() *configItem
IsRequired() bool
CanCapture() bool
CaptureWith(captureFunc CaptureFunc) *configItem
Capture(value *string) error
CanCaptureSubset() bool
CaptureSubsetWith(subsetFunc SubsetFunc) *configItem
CaptureSubset(config ConfigIfc) error
CanValidate() bool
ValidateWith(validateFunc ValidateFunc) *configItem
Validate(value string) bool
SetDefault(value string) *configItem
}
type Configurable ¶
Exported to support embedding
func NewConfigurable ¶
func NewConfigurable(configItems ...ConfigItemIfc) *Configurable
func (*Configurable) AddConfigItems ¶
func (r *Configurable) AddConfigItems(configItems ...ConfigItemIfc) *Configurable
func (*Configurable) Configure ¶
func (r *Configurable) Configure(config ConfigIfc) error
Just capture the provided configuration by default Overrides should call this parent, and return error if this fails or for any validation problems
func (*Configurable) GetConfig ¶
func (r *Configurable) GetConfig() *Config
func (*Configurable) GetMissingConfigs ¶
func (r *Configurable) GetMissingConfigs() []string
Verify that all required Configs are captured
func (*Configurable) HasMissingConfigs ¶
func (r *Configurable) HasMissingConfigs() bool
MissingConfigs as a bool!
func (*Configurable) Start ¶
func (r *Configurable) Start() error
type ConfigurableIfc ¶
type ConfigurableIfc interface {
// Embedded interface(s)
startable.StartableIfc
// Our own interface
AddConfigItems(configItems ...ConfigItemIfc) *Configurable
Configure(config ConfigIfc) error
HasMissingConfigs() bool
GetMissingConfigs() []string
GetConfig() *Config
}
Any type that implements ConfigurableIfc should be ready to receive configuration data one time as so: