gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

viper_go1_15.go (1408B)


      1 //go:build !go1.16 || !finder
      2 // +build !go1.16 !finder
      3 
      4 package viper
      5 
      6 import (
      7 	"fmt"
      8 	"os"
      9 	"path/filepath"
     10 
     11 	"github.com/spf13/afero"
     12 )
     13 
     14 // Search all configPaths for any config file.
     15 // Returns the first path that exists (and is a config file).
     16 func (v *Viper) findConfigFile() (string, error) {
     17 	v.logger.Info("searching for config in paths", "paths", v.configPaths)
     18 
     19 	for _, cp := range v.configPaths {
     20 		file := v.searchInPath(cp)
     21 		if file != "" {
     22 			return file, nil
     23 		}
     24 	}
     25 	return "", ConfigFileNotFoundError{v.configName, fmt.Sprintf("%s", v.configPaths)}
     26 }
     27 
     28 func (v *Viper) searchInPath(in string) (filename string) {
     29 	v.logger.Debug("searching for config in path", "path", in)
     30 	for _, ext := range SupportedExts {
     31 		v.logger.Debug("checking if file exists", "file", filepath.Join(in, v.configName+"."+ext))
     32 		if b, _ := exists(v.fs, filepath.Join(in, v.configName+"."+ext)); b {
     33 			v.logger.Debug("found file", "file", filepath.Join(in, v.configName+"."+ext))
     34 			return filepath.Join(in, v.configName+"."+ext)
     35 		}
     36 	}
     37 
     38 	if v.configType != "" {
     39 		if b, _ := exists(v.fs, filepath.Join(in, v.configName)); b {
     40 			return filepath.Join(in, v.configName)
     41 		}
     42 	}
     43 
     44 	return ""
     45 }
     46 
     47 // Check if file Exists
     48 func exists(fs afero.Fs, path string) (bool, error) {
     49 	stat, err := fs.Stat(path)
     50 	if err == nil {
     51 		return !stat.IsDir(), nil
     52 	}
     53 	if os.IsNotExist(err) {
     54 		return false, nil
     55 	}
     56 	return false, err
     57 }