Documentation
¶
Index ¶
Constants ¶
const (
// EnvProviderName represents the name of the environment variable-based configuration provider.
EnvProviderName = "Environment Variables"
)
Variables ¶
var ( // ErrDotEnvFilePathNotSet indicates that the .env file path is not configured. ErrDotEnvFilePathNotSet = errors.New(".env file path is not set") // ErrDotEnvFileReadFailed indicates failure to read the .env file. ErrDotEnvFileReadFailed = errors.New("failed to read .env file") // ErrDotEnvParseFailed indicates failure to parse the .env file content. ErrDotEnvParseFailed = errors.New("failed to parse .env file") // ErrSetEnv indicates a failure call to os.Setenv(). ErrSetEnv = errors.New("failed to set os env") )
var ( // ErrJSONFilePathNotSet indicates that the JSON file path is not configured. ErrJSONFilePathNotSet = errors.New("JSON file path is not set") // ErrJSONFileReadFailed indicates failure to read the JSON config file. ErrJSONFileReadFailed = errors.New("failed to read JSON config file") // ErrJSONDecodeFailed indicates failure to decode JSON content. ErrJSONDecodeFailed = errors.New("failed to decode JSON") )
Functions ¶
This section is empty.
Types ¶
type ContextProvider ¶ added in v0.3.2
type ContextProvider interface {
Provider
// LoadContext behaves like Load but honors the provided context.
LoadContext(ctx context.Context) (map[string]any, error)
}
ContextProvider is an optional interface for providers whose loading supports cancellation and deadlines (e.g. providers that call remote services). Config.LoadWithContext prefers LoadContext over Load for providers that implement it.
type DotEnvOption ¶
type DotEnvOption func(*DotEnvProvider)
DotEnvOption is a function that configures a DotEnvProvider.
func WithDotEnvFileAppendToOSEnv ¶
func WithDotEnvFileAppendToOSEnv(appendToOSEnv bool) DotEnvOption
WithDotEnvFileAppendToOSEnv sets the flag to append variables from the .env file to OS's env vars.
Default: false. Mirroring .env entries into the live process environment widens the blast radius of secrets (they are inherited by child processes and exposed via the OS) and lets a .env entry overwrite process variables, so it must be opted into explicitly.
func WithDotEnvFileFS ¶
func WithDotEnvFileFS(fileFS fs.FS) DotEnvOption
WithDotEnvFileFS sets the fs of which to read the .env file from.
Default: sysfs.SysFS.
func WithDotEnvFileNotFoundPanic ¶
func WithDotEnvFileNotFoundPanic(panicIfNotFound bool) DotEnvOption
WithDotEnvFileNotFoundPanic sets the flag to panic if the .env file is not found.
Default: true.
func WithDotEnvFilePath ¶
func WithDotEnvFilePath(filePath string) DotEnvOption
WithDotEnvFilePath sets the .env file path.
func WithDotEnvSeparator ¶
func WithDotEnvSeparator(sep string) DotEnvOption
WithDotEnvSeparator sets the separator for nested map values. Given a sep=__ variables like DATABASE__URL become database.url in the resulting map.
type DotEnvProvider ¶
type DotEnvProvider struct {
*providers.FSProvider
*EnvProvider
// contains filtered or unexported fields
}
DotEnvProvider reads configuration from .env file.
func NewDotEnvProvider ¶
func NewDotEnvProvider(opts ...DotEnvOption) *DotEnvProvider
NewDotEnvProvider creates .env provider with options.
func (*DotEnvProvider) Load ¶
func (p *DotEnvProvider) Load() (map[string]any, error)
Load implements the Provider interface.
func (*DotEnvProvider) Name ¶
func (p *DotEnvProvider) Name() string
Name implements the Provider interface.
type EnvOption ¶
type EnvOption func(*EnvProvider)
EnvOption is a function that configures an EnvProvider.
func WithEnvPrefix ¶
WithEnvPrefix sets the environment variable prefix. Only variables starting with this prefix are included, and the prefix is removed from the key (e.g., "APP_" prefix, "APP_HOST" -> "HOST").
func WithEnvSeparator ¶
WithEnvSeparator sets the separator for nested map values. Given a sep=__ variables like DATABASE__URL become database.url in the resulting map.
type EnvProvider ¶
type EnvProvider struct {
// contains filtered or unexported fields
}
EnvProvider reads configuration from environment variables.
func NewEnvProvider ¶
func NewEnvProvider(opts ...EnvOption) *EnvProvider
NewEnvProvider creates an environment variable provider with options.
func (*EnvProvider) Load ¶
func (p *EnvProvider) Load() (map[string]any, error)
Load implements the Provider interface.
func (*EnvProvider) Name ¶
func (p *EnvProvider) Name() string
Name implements the Provider interface.
type JSONOption ¶
type JSONOption func(*JSONProvider)
JSONOption is a function that configures a JSONProvider.
func WithJSONFileFS ¶
func WithJSONFileFS(fileFS fs.FS) JSONOption
WithJSONFileFS sets the fs of which to read the JSON file from.
Default: sysfs.SysFS.
func WithJSONFilePath ¶
func WithJSONFilePath(filePath string) JSONOption
WithJSONFilePath sets the JSON file path.
type JSONProvider ¶
type JSONProvider struct {
*providers.FSProvider
// contains filtered or unexported fields
}
JSONProvider reads configuration from a JSON file.
func NewJSONProvider ¶
func NewJSONProvider(opts ...JSONOption) *JSONProvider
NewJSONProvider creates a new file provider.
func (*JSONProvider) Load ¶
func (p *JSONProvider) Load() (map[string]any, error)
Load implements the Provider interface.
func (*JSONProvider) Name ¶
func (p *JSONProvider) Name() string
Name implements the Provider interface.
type Provider ¶
type Provider interface {
Name() string
// Load reads configuration from the source and returns it as a map.
// Keys should be hierarchical paths (e.g., "database.host").
Load() (map[string]any, error)
}
Provider defines the interface for configuration providers. Implement this interface to create custom providers like env, json, yml, etc.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package secretsmanager provides a gas-config provider that loads configuration from AWS Secrets Manager.
|
Package secretsmanager provides a gas-config provider that loads configuration from AWS Secrets Manager. |