https://github.com/wrfly/ecp
environment config parser | fill up the struct through the way you like
https://github.com/wrfly/ecp
config env parser
Last synced: 5 months ago
JSON representation
environment config parser | fill up the struct through the way you like
- Host: GitHub
- URL: https://github.com/wrfly/ecp
- Owner: wrfly
- License: apache-2.0
- Created: 2018-05-29T06:54:32.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-11-20T10:05:56.000Z (over 2 years ago)
- Last Synced: 2024-06-21T19:57:29.729Z (about 2 years ago)
- Topics: config, env, parser
- Language: Go
- Homepage:
- Size: 67.4 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
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.
[](https://goreportcard.com/report/github.com/wrfly/ecp)
[](https://travis-ci.org/wrfly/ecp)
[](https://godoc.org/github.com/wrfly/ecp)
[](https://github.com/wrfly/ecp/blob/master/LICENSE)
## Usage Example
```go
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:
```txt
default log level: [ debug ]
export LOGLEVEL=info
export PORT=1234
new log level: [ info ], port: [ 1234 ]
LOGLEVEL=debug
PORT=
```