Skip to content
Manage Configuration file and environment in GO
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE
README.md
gonfig.go
gonfig_test.go

README.md

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

You can’t perform that action at this time.