mirror of
https://github.com/stashapp/stash.git
synced 2025-12-28 03:03:02 +01:00
* Upgrade gqlgen to v0.17.2 This enables builds on Go 1.18. github.com/vektah/gqlparser is upgraded to the newest version too. Getting this to work is a bit of a hazzle. I had to first remove vendoring from the repository, perform the upgrade and then re-introduce the vendor directory. I think gqlgens analysis went wrong for some reason on the upgrade. It would seem a clean-room installation fixed it. * Bump project to 1.18 * Update all packages, address gqlgenc breaking changes * Let `go mod tidy` handle the go.mod file * Upgrade linter to 1.45.2 * Introduce v1.45.2 of the linter The linter now correctly warns on `strings.Title` because it isn't unicode-aware. Fix this by using the suggested fix from x/text/cases to produce unicode-aware strings. The mapping isn't entirely 1-1 as this new approach has a larger iface: it spans all of unicode rather than just ASCII. It coincides for ASCII however, so things should be largely the same. * Ready ourselves for errchkjson and contextcheck. * Revert dockerfile golang version changes for now Co-authored-by: Kermie <kermie@isinthe.house> Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
//go:build !go1.16 || !finder
|
|
// +build !go1.16 !finder
|
|
|
|
package viper
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/spf13/afero"
|
|
)
|
|
|
|
// Search all configPaths for any config file.
|
|
// Returns the first path that exists (and is a config file).
|
|
func (v *Viper) findConfigFile() (string, error) {
|
|
v.logger.Info("searching for config in paths", "paths", v.configPaths)
|
|
|
|
for _, cp := range v.configPaths {
|
|
file := v.searchInPath(cp)
|
|
if file != "" {
|
|
return file, nil
|
|
}
|
|
}
|
|
return "", ConfigFileNotFoundError{v.configName, fmt.Sprintf("%s", v.configPaths)}
|
|
}
|
|
|
|
func (v *Viper) searchInPath(in string) (filename string) {
|
|
v.logger.Debug("searching for config in path", "path", in)
|
|
for _, ext := range SupportedExts {
|
|
v.logger.Debug("checking if file exists", "file", filepath.Join(in, v.configName+"."+ext))
|
|
if b, _ := exists(v.fs, filepath.Join(in, v.configName+"."+ext)); b {
|
|
v.logger.Debug("found file", "file", filepath.Join(in, v.configName+"."+ext))
|
|
return filepath.Join(in, v.configName+"."+ext)
|
|
}
|
|
}
|
|
|
|
if v.configType != "" {
|
|
if b, _ := exists(v.fs, filepath.Join(in, v.configName)); b {
|
|
return filepath.Join(in, v.configName)
|
|
}
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
// Check if file Exists
|
|
func exists(fs afero.Fs, path string) (bool, error) {
|
|
stat, err := fs.Stat(path)
|
|
if err == nil {
|
|
return !stat.IsDir(), nil
|
|
}
|
|
if os.IsNotExist(err) {
|
|
return false, nil
|
|
}
|
|
return false, err
|
|
}
|