zoie 88e39c560e update: 修改module | 1 سال پیش | |
---|---|---|
.. | ||
README.md | 1 سال پیش | |
env.go | 1 سال پیش | |
env_test.go | 1 سال پیش | |
options.go | 1 سال پیش | |
watcher.go | 1 سال پیش |
The env source reads config from environment variables
We expect environment variables to be in the standard format of FOO=bar
Keys are converted to lowercase and split on underscore.
DATABASE_ADDRESS=127.0.0.1
DATABASE_PORT=3306
Becomes
{
"database": {
"address": "127.0.0.1",
"port": 3306
}
}
Environment variables can be namespaced so we only have access to a subset. Two options are available:
WithPrefix(p ...string)
WithStrippedPrefix(p ...string)
The former will preserve the prefix and make it a top level key in the config. The latter eliminates the prefix, reducing the nesting by one.
Given ENVs of:
APP_DATABASE_ADDRESS=127.0.0.1
APP_DATABASE_PORT=3306
VAULT_ADDR=vault:1337
and a source initialized as follows:
src := env.NewSource(
env.WithPrefix("VAULT"),
env.WithStrippedPrefix("APP"),
)
The resulting config will be:
{
"database": {
"address": "127.0.0.1",
"port": 3306
},
"vault": {
"addr": "vault:1337"
}
}
Specify source with data
src := env.NewSource(
// optionally specify prefix
env.WithPrefix("GO_ADMIN"),
)
Load the source into config
// Create new config
conf := config.NewConfig()
// Load env source
conf.Load(src)