Documentation
¶
Overview ¶
Example ¶
package main
import (
"fmt"
"io/ioutil"
"os"
"github.com/go-tk/configset"
)
func main() {
// 1. Create configuration files for testing.
_ = os.Mkdir("./temp", 0755)
ioutil.WriteFile("./temp/foo.yaml", []byte(`
user_id: 1000
nickname: roy
friends: [dave]
`), 0644)
ioutil.WriteFile("./temp/bar.yaml", []byte(`
secrets:
password: s0g00d
luck_numbers:
- 1
- 3
- 5
`), 0644)
// 2. Override configuration values with environment variables.
os.Setenv("CONFIGSET.foo.nickname", "lisa") // env value should be valid YAML
os.Setenv("CONFIGSET.foo.friends", "[maria, victoria]") // env value should be valid YAML
os.Setenv("CONFIGSET.bar.secrets.luck_numbers.1", "99") // env value should be valid YAML
// 3. Read in configuration files.
configset.MustLoad("./temp")
// 4. Dump the configuration set in form of JSON for debugging.
json := string(configset.Dump("", " "))
fmt.Println("===== Dump =====")
fmt.Print(json)
// 5. Read a configuration value into a struct.
var secrets struct {
Password string `json:"password"` // should use json tag rather than yaml tag
LuckNumbers []int `json:"luck_numbers"` // should use json tag rather than yaml tag
}
configset.MustReadValue("bar.secrets", &secrets)
fmt.Println("===== ReadValue =====")
fmt.Printf("%v\n", secrets)
}
Output: ===== Dump ===== { "bar": { "secrets": { "luck_numbers": [ 1, 99, 5 ], "password": "s0g00d" } }, "foo": { "friends": [ "maria", "victoria" ], "nickname": "lisa", "user_id": 1000 } } ===== ReadValue ===== {s0g00d [1 99 5]}
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrValueNotFound = errors.New("configset: value not found")
ErrValueNotFound is returned when the JSON value does not exist.
Functions ¶
func Dump ¶
func Dump(prefix string, indention string) json.RawMessage
Dump returns the config set in form of JSON.
func Load ¶ added in v0.4.0
Load loads the config set from all *.yaml files under the given directory. If there are environment variables set such as CONFIGSET.{path}={value}, the config set will be overwritten according to {paths} and {values}.
func MustLoad ¶ added in v0.4.0
func MustLoad(dirPath string)
MustLoad likes Load but panics when an error occurs.
func MustReadValue ¶ added in v0.4.0
func MustReadValue(path string, config interface{})
MustReadValue likes ReadValue but panics when an error occurs.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.