1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package conf
- import (
- "fmt"
- "io/ioutil"
- "log"
- "os"
- "path"
- "github.com/tal-tech/go-zero/core/mapping"
- )
- var loaders = map[string]func([]byte, interface{}) error{
- ".json": LoadConfigFromJsonBytes,
- ".yaml": LoadConfigFromYamlBytes,
- ".yml": LoadConfigFromYamlBytes,
- }
- func LoadConfig(file string, v interface{}) error {
- if content, err := ioutil.ReadFile(file); err != nil {
- return err
- } else if loader, ok := loaders[path.Ext(file)]; ok {
- return loader([]byte(os.ExpandEnv(string(content))), v)
- } else {
- return fmt.Errorf("unrecoginized file type: %s", file)
- }
- }
- func LoadConfigFromJsonBytes(content []byte, v interface{}) error {
- return mapping.UnmarshalJsonBytes(content, v)
- }
- func LoadConfigFromYamlBytes(content []byte, v interface{}) error {
- return mapping.UnmarshalYamlBytes(content, v)
- }
- func MustLoad(path string, v interface{}) {
- if err := LoadConfig(path, v); err != nil {
- log.Fatalf("error: config file %s, %s", path, err.Error())
- }
- }
|