func newConfigWithIncludes()

in getdeps/config.go [56:88]


func newConfigWithIncludes(data []byte, basedir string, maxDepth, currentDepth uint) (*Config, error) {
	currentDepth++
	if currentDepth > maxDepth {
		return nil, fmt.Errorf("maximum recursion depth of %d reached", maxDepth)
	}
	topConfig, err := NewConfig(data)
	if err != nil {
		return nil, err
	}
	config := &Config{}
	for _, include := range topConfig.Includes {
		if !filepath.IsAbs(include) {
			include = filepath.Join(basedir, include)
		}
		includeData, err := ioutil.ReadFile(include)
		if err != nil {
			return nil, fmt.Errorf("failed to read file '%s': %v", include, err)
		}
		other, err := newConfigWithIncludes(includeData, basedir, maxDepth, currentDepth)
		if err != nil {
			return nil, err
		}
		config, err = mergeConfigs(config, other)
		if err != nil {
			return nil, fmt.Errorf("failed to merge file '%s' into the configuration: %v", include, err)
		}
	}
	config, err = mergeConfigs(config, topConfig)
	if err != nil {
		return nil, fmt.Errorf("failed to merge top config into the configuration: %v", err)
	}
	return config, nil
}