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
}