From 2f6039f23f75ef0d63f980c8354d3d638071f230 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Tue, 29 May 2018 13:21:42 -0700 Subject: Revert "MM-6839: search relative to executable (#8853)" (#8876) This reverts commit d3cf110620033f8831a55a3fd911d7864b6aab4a. --- utils/config.go | 100 ++++++++++++-------------------------------------------- 1 file changed, 21 insertions(+), 79 deletions(-) (limited to 'utils/config.go') diff --git a/utils/config.go b/utils/config.go index da1918490..00fd2642a 100644 --- a/utils/config.go +++ b/utils/config.go @@ -32,94 +32,36 @@ const ( LOG_FILENAME = "mattermost.log" ) -var ( - commonBaseSearchPaths = []string{ - ".", - "..", - "../..", - "../../..", - } -) - -func FindPath(path string, baseSearchPaths []string, filter func(os.FileInfo) bool) string { - if filepath.IsAbs(path) { - if _, err := os.Stat(path); err == nil { - return path - } - - return "" - } - - searchPaths := []string{} - for _, baseSearchPath := range baseSearchPaths { - searchPaths = append(searchPaths, baseSearchPath) - } - - // Additionally attempt to search relative to the location of the running binary. - var binaryDir string - if exe, err := os.Executable(); err == nil { - if exe, err = filepath.EvalSymlinks(exe); err == nil { - if exe, err = filepath.Abs(exe); err == nil { - binaryDir = filepath.Dir(exe) - } - } - } - if binaryDir != "" { - for _, baseSearchPath := range baseSearchPaths { - searchPaths = append( - searchPaths, - filepath.Join(binaryDir, baseSearchPath), - ) - } - } - - for _, parent := range searchPaths { - found, err := filepath.Abs(filepath.Join(parent, path)) - if err != nil { - continue - } else if fileInfo, err := os.Stat(found); err == nil { - if filter != nil && filter(fileInfo) { - return found - } else { - return found - } - } - } - - return "" -} - // FindConfigFile attempts to find an existing configuration file. fileName can be an absolute or // relative path or name such as "/opt/mattermost/config.json" or simply "config.json". An empty // string is returned if no configuration is found. func FindConfigFile(fileName string) (path string) { - found := FindFile(filepath.Join("config", fileName)) - if found == "" { - found = FindPath(fileName, []string{"."}, nil) + if filepath.IsAbs(fileName) { + if _, err := os.Stat(fileName); err == nil { + return fileName + } + } else { + for _, dir := range []string{"./config", "../config", "../../config", "../../../config", "."} { + path, _ := filepath.Abs(filepath.Join(dir, fileName)) + if _, err := os.Stat(path); err == nil { + return path + } + } } - - return found -} - -// FindFile looks for the given file in nearby ancestors relative to the current working -// directory as well as the directory of the executable. -func FindFile(path string) string { - return FindPath(path, commonBaseSearchPaths, func(fileInfo os.FileInfo) bool { - return !fileInfo.IsDir() - }) + return "" } -// FindDir looks for the given directory in nearby ancestors relative to the current working -// directory as well as the directory of the executable, falling back to `./` if not found. +// FindDir looks for the given directory in nearby ancestors, falling back to `./` if not found. func FindDir(dir string) (string, bool) { - found := FindPath(dir, commonBaseSearchPaths, func(fileInfo os.FileInfo) bool { - return fileInfo.IsDir() - }) - if found == "" { - return "./", false + for _, parent := range []string{".", "..", "../..", "../../.."} { + foundDir, err := filepath.Abs(filepath.Join(parent, dir)) + if err != nil { + continue + } else if _, err := os.Stat(foundDir); err == nil { + return foundDir, true + } } - - return found, true + return "./", false } func MloggerConfigFromLoggerConfig(s *model.LogSettings) *mlog.LoggerConfiguration { -- cgit v1.2.3-1-g7c22