environment-toml

Go library for environment specific settings loader defined by TOML.

Features

  • Load TOML and setup setting struct.
  • When environment specific setting defined, overwrite default settings.

Install

go get github.com/pelletier/go-toml
go get github.com/nirasan/environment-toml

Usage

Import

import "github.com/nirasan/environment-toml"

Define setting file

[user]
name = "user1"
age = 10

[user.development]
name = "user2"

[user.production]
name = "user3"
age = 20

Define setting struct

type Config struct {
    User User
}

type User struct {
    Name string
    Age  int64
}

Load development setting

// `development` environment
c := &Config{}
err := toml.Load(c, "config.toml", "development")
if err != nil {
    log.Fatal(err)
}
fmt.Println( c.User.Name ) //=> user2 | user.name overwritten by user.development.name
fmt.Println( c.User.Age ) //=> 10 | user.age

Load production setting

// `production` environment
c := &Config{}
err := toml.Load(c, "config.toml", "production")
if err != nil {
    log.Fatal(err)
}
fmt.Println( c.User.Name ) //=> user3 | user.name overwritten by user.production.name
fmt.Println( c.User.Age ) //=> 20 | user.age overwritten by user.production.age

Examples

Basic types (environment: development)

Basic types (environment: production)

Struct type (environment: development)

Struct type (environment: production)

License

MIT