Help us shape the future of Go! Take the 2026 Go Developer Survey

rorconfig

package
v1.25.2 Latest Latest
Warning

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

Go to latest
Published: Sep 22, 2026 License: Apache-2.0 Imports: 12 Imported by: 10

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

Constants

This section is empty.

Variables

View Source
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

func ExportToStruct[T any](rc *rorConfigSet) (*T, error)

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

func GetConfigToStruct[T any]() (*T, error)

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

func GetTime[K configKey](key K) time.Time

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

func GetTimeDuration[K configKey](key K) time.Duration

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

func LoadFromFile[T any](path string) error

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 SaveToFile[T any](path string) error

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

func SetConfigFromStruct(source any) error

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.

Jump to

Keyboard shortcuts

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