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.