config

package
v0.0.0-...-ed34e12 Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2026 License: MIT Imports: 4 Imported by: 11

Documentation

Overview

DigiStratum GoLib - Config

Index

Constants

View Source
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 CaptureFunc func(value string) error

type Config

type Config struct {
	*hashmap.HashMap
}

Config embeds a HashMap so that we can extend it

func NewConfig

func NewConfig() *Config

Factory Functions

func (*Config) Dereference

func (r *Config) Dereference(referenceConfig ConfigIfc) int

Dereference any values we have that %reference% keys in the referenceConfig returns count of references substituted

func (*Config) DereferenceAll

func (r *Config) DereferenceAll(referenceConfigs ...ConfigIfc) int

Dereference against a list of other referenceConfigs

func (*Config) DereferenceLoop

func (r *Config) DereferenceLoop(maxLoops int, referenceConfig ConfigIfc) bool

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

func (r Config) DereferenceString(str string) *string

Dereference any %key% references to our own keys in the supplied string returns dereferenced string

func (Config) GetInverseSubsetConfig

func (r Config) GetInverseSubsetConfig(prefix string) *Config

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

func (r Config) GetSubsetConfig(prefix string) *Config

Get configuration datum whose keys begin with the prefix... We also strip the prefix off leaving just the interesting parts

func (Config) GetSubsetKeys

func (r Config) GetSubsetKeys(keys *[]string) *Config

Get configuration datum matching the specified keys, returned as a new Config pointer

func (*Config) MergeConfig

func (r *Config) MergeConfig(mergeCfg ConfigIfc) *Config

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

type Configurable struct {
	*startable.Startable
	// contains filtered or unexported fields
}

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:

type SubsetFunc

type SubsetFunc func(config ConfigIfc) error

type ValidateFunc

type ValidateFunc func(value string) bool

Jump to

Keyboard shortcuts

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