diff --git a/config.go b/config.go index e1ef5a3..7cf8037 100644 --- a/config.go +++ b/config.go @@ -35,7 +35,7 @@ func (c *Config) Load(path string) error { c.path = path c.files = make([]string, 0) - err := c.resolve(path) + err := c.resolve(path, true) if err != nil { return err } @@ -234,14 +234,16 @@ func (c *Config) get(k string, v interface{}) interface{} { return v } -func (c *Config) resolve(path string) error { +// direct signifies if this is the config path directly specified by the user, +// versus a file/dir found by recursing into that path +func (c *Config) resolve(path string, direct bool) error { i, err := os.Stat(path) if err != nil { return nil } if !i.IsDir() { - c.addFile(path) + c.addFile(path, direct) return nil } @@ -251,7 +253,7 @@ func (c *Config) resolve(path string) error { } for _, p := range paths { - err := c.resolve(filepath.Join(path, p)) + err := c.resolve(filepath.Join(path, p), false) if err != nil { return err } @@ -260,10 +262,10 @@ func (c *Config) resolve(path string) error { return nil } -func (c *Config) addFile(path string) error { +func (c *Config) addFile(path string, direct bool) error { ext := filepath.Ext(path) - if ext != ".yaml" && ext != ".yml" { + if !direct && ext != ".yaml" && ext != ".yml" { return nil }