func Load()

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
}