Documentation
¶
Overview ¶
Package rorconfig provides a centralized configuration management system for ROR applications. It supports loading configuration values from environment variables, default values, and custom secret providers.
Index ¶
- Variables
- func AutomaticEnv()
- func ExportToStruct[T any](rc *rorConfigSet) (*T, error)
- func GetBool[K configKey](key K) bool
- func GetConfigToStruct[T any]() (*T, error)
- func GetConfigs() configsMap
- func GetFloat32[K configKey](key K) float32
- func GetFloat64[K configKey](key K) float64
- func GetInt[K configKey](key K) int
- func GetInt64[K configKey](key K) int64
- func GetString[K configKey](key K) string
- func GetTime[K configKey](key K) time.Time
- func GetTimeDuration[K configKey](key K) time.Duration
- func GetUint[K configKey](key K) uint
- func GetUint32[K configKey](key K) uint32
- func GetUint64[K configKey](key K) uint64
- func InitConfig()
- func IsSet[K configKey](key K) bool
- func LoadFromFile[T any](path string) error
- func SaveToFile[T any](path string) error
- func Set[K configKey](key K, value any)
- func SetConfigFromStruct(source any) error
- func SetDefault[K configKey](key K, defaultValue any)
- func SetWithProvider[K configKey](key K, provider SecretProvider)
- type ConfigConst
- type ConfigData
- func (cd ConfigData) Bool() bool
- func (cd ConfigData) Float32() float32
- func (cd ConfigData) Float64() float64
- func (cd ConfigData) Int() int
- func (cd ConfigData) Int64() int64
- func (cd ConfigData) String() string
- func (cd ConfigData) Time() time.Time
- func (cd ConfigData) TimeDuration() time.Duration
- func (cd ConfigData) Uint() uint
- func (cd ConfigData) Uint32() uint32
- func (cd ConfigData) Uint64() uint64
- type ConfigSource
- type EnvironmentVariableConfig
- type EnvironmentVariables
- func (ev *EnvironmentVariables) Add(key string)
- func (ev *EnvironmentVariables) GetDescription(key string) string
- func (ev *EnvironmentVariables) GetEnvVariableConfigByKey(key string) (EnvironmentVariableConfig, bool)
- func (ev *EnvironmentVariables) IsDeprecated(key string) bool
- func (ev *EnvironmentVariables) IsSet(val string) bool
- type SecretProvider
Constants ¶
This section is empty.
Variables ¶
var ConfigConsts = EnvironmentVariables{ {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, {/* contains filtered or unexported fields */}, }
...existing code...
Functions ¶
func AutomaticEnv ¶
func AutomaticEnv()
AutomaticEnv loads configuration values from environment variables for all registered string(key)s. This is called internally by InitConfig and typically doesn't need to be called directly.
func ExportToStruct ¶ added in v1.18.2
ExportToStruct creates a new instance of T and populates its fields from the configuration store. Fields must be tagged with `rorconfig:"KEY"` to be populated. Untagged struct fields are recursed into. Supports the same set of types as ImportStruct: string, bool, int*, uint*, float*, time.Time, time.Duration, and pointers to any of these.
func GetBool ¶
func GetBool[K configKey](key K) bool
GetBool retrieves a configuration value as a boolean. Returns true if the value is "true" (case-insensitive), false otherwise.
func GetConfigToStruct ¶ added in v1.18.2
GetConfigToStruct creates a new instance of T and populates its rorconfig-tagged fields from the configuration store. This is the inverse of SetConfigFromStruct and enables a full round-trip: file → store → struct → file.
func GetConfigs ¶
func GetConfigs() configsMap
GetConfigs returns a copy of all currently loaded configuration values. This is primarily used for debugging and testing purposes.
func GetFloat32 ¶
func GetFloat32[K configKey](key K) float32
GetFloat32 retrieves a configuration value as a 32-bit floating point number. Returns the float32 value, or 0.0 if the value cannot be parsed as a float32.
func GetFloat64 ¶
func GetFloat64[K configKey](key K) float64
GetFloat64 retrieves a configuration value as a 64-bit floating point number. Returns the float64 value, or 0.0 if the value cannot be parsed as a float64.
func GetInt ¶
func GetInt[K configKey](key K) int
GetInt retrieves a configuration value as an integer. Returns the integer value, or 0 if the value cannot be parsed as an integer.
func GetInt64 ¶
func GetInt64[K configKey](key K) int64
GetInt64 retrieves a configuration value as a 64-bit integer. Returns the int64 value, or 0 if the value cannot be parsed as an int64.
func GetString ¶
func GetString[K configKey](key K) string
GetString retrieves a configuration value as a string. Returns the string value of the configuration string(key), or empty string if not set.
func GetTime ¶ added in v1.11.0
GetTime retrieves a configuration value as a time.Time. Returns the time.Time value, or the zero time if the value cannot be parsed as a time.
func GetTimeDuration ¶ added in v1.11.0
GetTimeDuration retrieves a configuration value as a time.Duration. Returns the time.Duration value, or 0 if the value cannot be parsed as a duration.
func GetUint ¶
func GetUint[K configKey](key K) uint
GetUint retrieves a configuration value as an unsigned integer. Returns the uint value, or 0 if the value cannot be parsed as a uint.
func GetUint32 ¶
func GetUint32[K configKey](key K) uint32
GetUint32 retrieves a configuration value as a 32-bit unsigned integer. Returns the uint32 value, or 0 if the value cannot be parsed as a uint32.
func GetUint64 ¶
func GetUint64[K configKey](key K) uint64
GetUint64 retrieves a configuration value as a 64-bit unsigned integer. Returns the uint64 value, or 0 if the value cannot be parsed as a uint64.
func InitConfig ¶
func InitConfig()
InitConfig initializes the configuration system by automatically loading all recognized environment variables. This should be called once at application startup.
func IsSet ¶
func IsSet[K configKey](key K) bool
IsSet checks if a configuration string(key) has been set (either from environment variable, default value, or explicitly set value). Returns true if the string(key) exists and has a value, false otherwise.
func LoadFromFile ¶ added in v1.18.2
LoadFromFile reads a YAML file at the given path, unmarshals it into T (which defines the file schema via yaml tags), and imports the rorconfig-tagged fields into the configuration store with ConfigSourceConfigFile. After loading, values are accessed via the rorconfig.Get* methods.
func SaveToFile ¶ added in v1.18.2
func Set ¶
func Set[K configKey](key K, value any)
Set explicitly sets a configuration value for the given string(key). This will override any environment variable or default value.
func SetConfigFromStruct ¶ added in v1.11.0
SetConfigFromStruct registers configuration values from a struct using the rorconfig tag on each field. Tagged fields are written into the internal configuration map using their tag value as key. Supported field kinds are strings, booleans, integers, unsigned integers, and floats.
func SetDefault ¶
func SetDefault[K configKey](key K, defaultValue any)
SetDefault sets a default value for a configuration string(key). The default value will only be used if no environment variable or explicit value is set.
func SetWithProvider ¶
func SetWithProvider[K configKey](key K, provider SecretProvider)
SetWithProvider sets a configuration value using a custom SecretProvider. The provider's GetSecret() method will be called to retrieve the actual value. This is useful for integrating with external secret management systems.
Types ¶
type ConfigConst ¶
type ConfigConst string
const ( ROLE ConfigConst = "ROLE" HTTP_HOST ConfigConst = "HTTP_HOST" HTTP_PORT ConfigConst = "HTTP_PORT" HTTP_HEALTH_HOST ConfigConst = "HTTP_HEALTH_HOST" HTTP_HEALTH_PORT ConfigConst = "HTTP_HEALTH_PORT" // HTTP_HEALTH_LIVENESS_GRACE, when set to a non-zero duration (e.g. "5m"), // makes /health/live fail after a critical dependency has been continuously // failing for longer than this grace, so Kubernetes restarts the pod. Empty // or zero disables the escalation (liveness never inspects dependencies). HTTP_HEALTH_LIVENESS_GRACE ConfigConst = "HTTP_HEALTH_LIVENESS_GRACE" // HTTP_HEALTH_LIVENESS_CRITICAL_CHECKS is a comma-separated list of health // check names (e.g. "mongodb") that liveness escalation considers critical. // Empty means every registered dependency check is considered critical. HTTP_HEALTH_LIVENESS_CRITICAL_CHECKS ConfigConst = "HTTP_HEALTH_LIVENESS_CRITICAL_CHECKS" HTTP_TIMEOUT ConfigConst = "HTTP_TIMEOUT" HTTP_USE_CORS ConfigConst = "HTTP_USE_CORS" HTTP_ALLOW_ORIGINS ConfigConst = "HTTP_ALLOW_ORIGINS" ROR_API_KEY_SALT ConfigConst = "API_KEY_SALT" ROR_API_KEY ConfigConst = "ROR_API_KEY" ROR_API_KEY_SECRET ConfigConst = "ROR_API_KEY_SECRET" ROR_API_ENDPOINT ConfigConst = "ROR_API_ENDPOINT" DEVELOPMENT ConfigConst = "DEVELOPMENT" ENVIRONMENT ConfigConst = "ENVIRONMENT" ERROR_COUNT ConfigConst = "ERROR_COUNT" POD_NAMESPACE ConfigConst = "POD_NAMESPACE" CLUSTER_ID ConfigConst = "CLUSTER_ID" GIT_REPO_URL ConfigConst = "GIT_REPO_URL" GIT_BRANCH ConfigConst = "GIT_BRANCH" GIT_TOKEN ConfigConst = "GIT_TOKEN" GIT_PATH ConfigConst = "GIT_PATH" LDAP_CONFIGS ConfigConst = "LDAP_CONFIGS" LDAP_CERTIFICATE_FOLDER ConfigConst = "LDAP_CERTIFICATE_FOLDER" OIDC_PROVIDER ConfigConst = "OIDC_PROVIDER" OIDC_CLIENT_ID ConfigConst = "OIDC_CLIENT_ID" OIDC_DEVICE_CLIENT_ID ConfigConst = "OIDC_DEVICE_CLIENT_ID" OIDC_SKIP_ISSUER_VERIFY ConfigConst = "OIDC_SKIP_ISSUER_VERIFY" OIDC_ISSUERS ConfigConst = "OIDC_ISSUERS" OIDC_SIGNER_ISSUER ConfigConst = "OIDC_SIGNER_ISSUER" VAULT_URL ConfigConst = "VAULT_URL" MONGODB_HOST ConfigConst = "MONGODB_HOST" MONGODB_PORT ConfigConst = "MONGODB_PORT" MONGODB_DATABASE ConfigConst = "MONGODB_DATABASE" MONGO_DATABASE ConfigConst = "MONGO_DATABASE" MONGODB_URL ConfigConst = "MONGODB_URL" RABBITMQ_HOST ConfigConst = "RABBITMQ_HOST" RABBITMQ_PORT ConfigConst = "RABBITMQ_PORT" RABBITMQ_BROADCAST_NAME ConfigConst = "RABBITMQ_BROADCAST_NAME" RABBITMQ_CONNECTIONSTRING ConfigConst = "RABBITMQ_CONNECTIONSTRING" KV_HOST ConfigConst = "KV_HOST" KV_PORT ConfigConst = "KV_PORT" // KV_VAULT_ROLE is the vault database role used to issue redis/valkey // credentials. When empty it defaults to "valkey-<ROLE>-role". KV_VAULT_ROLE ConfigConst = "KV_VAULT_ROLE" // KV_ENABLED gates whether the redis/valkey client is initialized. It is // enabled by default; set it to "false" to skip connecting to redis. KV_ENABLED ConfigConst = "KV_ENABLED" TRACER_ID ConfigConst = "TRACER_ID" ENABLE_TRACING ConfigConst = "ENABLE_TRACING" OPENTELEMETRY_COLLECTOR_ENDPOINT ConfigConst = "OPENTELEMETRY_COLLECTOR_ENDPOINT" PROFILER_ENABLED ConfigConst = "PROFILER_ENABLED" STARTUP_SLEEP_TIME ConfigConst = "STARTUP_SLEEP_TIME" VERSION ConfigConst = "VERSION" COMMIT ConfigConst = "COMMIT" // ms MS_ENDPOINT ConfigConst = "MS_ENDPOINT" MS_HTTP_PORT ConfigConst = "MS_HTTP_PORT" ENABLE_PPROF ConfigConst = "ENABLE_PPROF" )
type ConfigData ¶
type ConfigData struct {
Value string
// contains filtered or unexported fields
}
func (ConfigData) Bool ¶
func (cd ConfigData) Bool() bool
func (ConfigData) Float32 ¶
func (cd ConfigData) Float32() float32
func (ConfigData) Float64 ¶
func (cd ConfigData) Float64() float64
func (ConfigData) Int ¶
func (cd ConfigData) Int() int
func (ConfigData) Int64 ¶
func (cd ConfigData) Int64() int64
func (ConfigData) String ¶
func (cd ConfigData) String() string
func (ConfigData) Time ¶ added in v1.11.0
func (cd ConfigData) Time() time.Time
func (ConfigData) TimeDuration ¶ added in v1.11.0
func (cd ConfigData) TimeDuration() time.Duration
func (ConfigData) Uint ¶
func (cd ConfigData) Uint() uint
func (ConfigData) Uint32 ¶
func (cd ConfigData) Uint32() uint32
func (ConfigData) Uint64 ¶
func (cd ConfigData) Uint64() uint64
type ConfigSource ¶ added in v1.11.0
type ConfigSource string
const ( ConfigSourceUnknown ConfigSource = "unknown" ConfigSourceEnv ConfigSource = "env" ConfigSourceFlag ConfigSource = "flag" ConfigSourceConfigFile ConfigSource = "configfile" ConfigSourceDefault ConfigSource = "default" )
func NewConfigSource ¶ added in v1.11.0
func NewConfigSource(source string) ConfigSource
type EnvironmentVariableConfig ¶ added in v1.6.0
type EnvironmentVariableConfig struct {
// contains filtered or unexported fields
}
type EnvironmentVariables ¶ added in v1.6.0
type EnvironmentVariables []EnvironmentVariableConfig
func (*EnvironmentVariables) Add ¶ added in v1.6.0
func (ev *EnvironmentVariables) Add(key string)
func (*EnvironmentVariables) GetDescription ¶ added in v1.6.0
func (ev *EnvironmentVariables) GetDescription(key string) string
func (*EnvironmentVariables) GetEnvVariableConfigByKey ¶ added in v1.6.0
func (ev *EnvironmentVariables) GetEnvVariableConfigByKey(key string) (EnvironmentVariableConfig, bool)
GetEnvVariableByKey returns the environment variable configration for the provided env var.
func (*EnvironmentVariables) IsDeprecated ¶ added in v1.6.0
func (ev *EnvironmentVariables) IsDeprecated(key string) bool
func (*EnvironmentVariables) IsSet ¶ added in v1.6.0
func (ev *EnvironmentVariables) IsSet(val string) bool
type SecretProvider ¶
type SecretProvider interface {
// GetSecret retrieves a secret value from the provider
GetSecret() string
}
SecretProvider is an interface for custom secret retrieval mechanisms. Implementations can provide secrets from various sources like Vault, Kubernetes secrets, etc.