in src/common/conf/conf.go [33:74]
func Load(fname string) (Config, error) {
c := New()
lineCnt := 0
replaceVar := func(k string) string {
if v := os.Getenv(k); len(v) > 0 {
return v
}
if v, ok := c[k]; ok {
return v
}
return ""
}
file, err := os.Open(fname)
if err != nil {
return nil, err
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
lineCnt++
line := scanner.Text()
line = strings.TrimSpace(line)
if len(line) > 0 && line[0] != param.Comment {
values := strings.SplitN(line, "=", 2)
if len(values) != 2 {
return nil, fmt.Errorf("bad config line %d: '%s'\n", lineCnt, line)
}
key := strings.TrimSpace(values[0])
value := strings.TrimSpace(values[1])
if len(key) == 0 {
return nil, fmt.Errorf("bad key on line %d: '%s'\n", lineCnt, line)
}
value = os.Expand(value, replaceVar)
c.Put(key, value)
}
}
glog.Infof("%s: Lines: %d, Parameters: %d\n", fname, lineCnt, c.Size())
return c, nil
}