in config/stack.go [39:82]
func (s *Stack) findAndReadConfig(path string) (Config, error) {
config := Config{}
candidates := []string{
".deploystack/deploystack.yaml",
".deploystack/deploystack.json",
"deploystack.json",
}
configPath := ""
for _, v := range candidates {
candidate := filepath.Join(path, v)
if _, err := os.Stat(candidate); err == nil {
configPath = candidate
break
}
}
if configPath == "" {
return config, ErrConfigNotExist
}
content, err := ioutil.ReadFile(configPath)
if err != nil {
return config, fmt.Errorf("unable to find or read config (%s) file: %s", configPath, err)
}
switch filepath.Ext(configPath) {
case ".yaml":
config, err = NewConfigYAML(content)
if err != nil {
return config, fmt.Errorf("unable to parse config file: %s", err)
}
return config, nil
default:
config, err = NewConfigJSON(content)
if err != nil {
return config, fmt.Errorf("unable to parse config file: %s", err)
}
}
return config, nil
}