//go:build finder package viper import ( "fmt" "github.com/sagikazarmark/locafero" ) // Search all configPaths for any config file. // Returns the first path that exists (and is a config file). func (v *Viper) findConfigFile() (string, error) { var names []string if v.configType != "" { names = locafero.NameWithOptionalExtensions(v.configName, SupportedExts...) } else { names = locafero.NameWithExtensions(v.configName, SupportedExts...) } finder := locafero.Finder{ Paths: v.configPaths, Names: names, Type: locafero.FileTypeFile, } results, err := finder.Find(v.fs) if err != nil { return "", err } if len(results) == 0 { return "", ConfigFileNotFoundError{v.configName, fmt.Sprintf("%s", v.configPaths)} } return results[0], nil }