mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-11-29 23:22:45 +00:00
39 lines
775 B
Go
39 lines
775 B
Go
|
//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
|
||
|
}
|