• Stars
    star
    121
  • Rank 293,924 (Top 6 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 8 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Manage Configuration file and environment in GO

gonfig

gonfig is a lightweight Golang package for intergrating both JSON configs and enviornment variables into one config object.

Usage

First define a configuration structure:

type Configuration struct {
	Port              int
	Connection_String string
}

Then fill in our JSON file:

{
	"Port": 8080
}

We do not define Connection_String in the JSON as we would prefer to define that through an enviornment variable.

Best practices of configuration file

using Docker:

$ docker run [...] -e Connection_String="..." [...]

To make this simple for developers we can use gonfig to easily fill in our struct.

$ go get github.com/tkanos/gonfig
import "github.com/tkanos/gonfig"

configuration := Configuration{}
err := gonfig.GetConf("pathtomyjonfile.json", &configuration)
if err != nil {
	panic(err)
}

Now we can use the configuration as if it was coming from one source.

// pseudo code
if configuration.Port == 8080 {
	return true
}
if configuration.Connection_String != nil {
	return true
}

using different environment variables name

If your env variable has a different name than the json one, you can just define an env attribute

type Configuration struct {
	Port              int  `env:"MYAPP_PORT"`
	Connection_String string
}

When should gonfig be used?

If you have a limited number of enviornment configuration variables, it's probably better to set the struct values yourself.

configuration.Connection_String = os.Getenv("Connection_String")

gonfig makes it easier to combine JSON and enviornment variables into one struct automatically.

Sample

You can find a sample of the use of Gonfig project HERE

Links