# README
ecp
Environment config parser
If you run your application in a container and deploy it via a docker-compose file, then you may need this tool
for parsing configuration easily instead of mounting an external config file. You can simply set some environments
and then ecp
will help you fill the configs. Or, you can COPY
a "default" config file to the image, and change some
variables by overwriting the keys via environments.
The environment config keys can be auto generated or set by the yaml
or env
tag.
The only thing you should do is importing this package, and Parse
your config.
Usage Example
package main
import (
"fmt"
"os"
"github.com/wrfly/ecp"
)
type Conf struct {
LogLevel string `default:"debug"`
Port int `env:"PORT"`
}
func main() {
config := &Conf{}
if err := ecp.Parse(config); err != nil {
panic(err)
}
fmt.Printf("default log level: [ %s ]\n", config.LogLevel)
fmt.Println()
// set some env
envs := map[string]string{
"LOGLEVEL": "info",
"PORT": "1234",
}
for k, v := range envs {
fmt.Printf("export %s=%s\n", k, v)
os.Setenv(k, v)
}
fmt.Println()
// then parse configuration from environments
if err := ecp.Parse(config, "ECP"); err != nil {
panic(err)
}
fmt.Printf("new log level: [ %s ], port: [ %d ]\n",
config.LogLevel, config.Port)
fmt.Println()
// and list all the env keys
envLists := ecp.List(config, "ecp")
for _, k := range envLists {
fmt.Println(k)
}
}
Outputs:
default log level: [ debug ]
export LOGLEVEL=info
export PORT=1234
new log level: [ info ], port: [ 1234 ]
LOGLEVEL=debug
PORT=
# Functions
Get the value of the keyName in that struct.
GetBool returns bool.
GetFloat64 returns float64.
GetInt64 returns int64.
GetString returns string.
List all the config environments.
New ecp object.
Parse the configuration through environments starting with the prefix (or not) ecp.Parse(&config) or ecp.Parse(&config, "PREFIX")
Parse will overwrite the existing value if there is an environment configuration matched with the struct name or the "env" tag name.
# Type aliases
No description provided by the author
No description provided by the author
No description provided by the author