diff --git a/parser/parser.go b/parser/parser.go index 334b8c6..9e00597 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -14,6 +14,7 @@ import ( "gopkg.in/yaml.v2" "io/ioutil" "os" + "path/filepath" "regexp" "strconv" "strings" @@ -169,8 +170,13 @@ func (f *ConfigurationFile) Parse(path string, internal bool) error { return nil } - if _, err := os.Create(path); err != nil { - return errors.WithStack(err) + b := strings.TrimSuffix(path, filepath.Base(path)) + if err := os.MkdirAll(b, 0755); err != nil { + return errors.Wrap(err, "failed to create base directory for missing configuration file") + } else { + if _, err := os.Create(path); err != nil { + return errors.Wrap(err, "failed to create missing configuration file") + } } return f.Parse(path, true)