diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-03-22 04:02:49 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-21 16:02:49 -0400 |
commit | ce9dee5a1e8ae670c97621bca409d8cf43a90102 (patch) | |
tree | 6c9d8922dfae4bdcc1785340f2a866f805259988 /modules/options/dynamic.go | |
parent | 253a00aaac6b17346927e42c709f3f96672caaf3 (diff) | |
download | gitea-ce9dee5a1e8ae670c97621bca409d8cf43a90102.tar.gz gitea-ce9dee5a1e8ae670c97621bca409d8cf43a90102.zip |
Introduce path Clean/Join helper functions (#23495)
Since #23493 has conflicts with latest commits, this PR is my proposal
for fixing #23371
Details are in the comments
And refactor the `modules/options` module, to make it always use
"filepath" to access local files.
Benefits:
* No need to do `util.CleanPath(strings.ReplaceAll(p, "\\", "/"))),
"/")` any more (not only one before)
* The function behaviors are clearly defined
Diffstat (limited to 'modules/options/dynamic.go')
-rw-r--r-- | modules/options/dynamic.go | 48 |
1 files changed, 6 insertions, 42 deletions
diff --git a/modules/options/dynamic.go b/modules/options/dynamic.go index 8c954492ae..3d6261983f 100644 --- a/modules/options/dynamic.go +++ b/modules/options/dynamic.go @@ -6,62 +6,26 @@ package options import ( - "fmt" - "os" - "path" - - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/util" ) -var directories = make(directorySet) - // Dir returns all files from static or custom directory. func Dir(name string) ([]string, error) { if directories.Filled(name) { return directories.Get(name), nil } - var result []string - - for _, dir := range []string{ - path.Join(setting.CustomPath, "options", name), // custom dir - path.Join(setting.StaticRootPath, "options", name), // static dir - } { - files, err := statDirIfExist(dir) - if err != nil { - return nil, err - } - result = append(result, files...) + result, err := listLocalDirIfExist([]string{setting.CustomPath, setting.StaticRootPath}, "options", name) + if err != nil { + return nil, err } return directories.AddAndGet(name, result), nil } -// fileFromDir is a helper to read files from static or custom path. -func fileFromDir(name string) ([]byte, error) { - customPath := path.Join(setting.CustomPath, "options", name) - - isFile, err := util.IsFile(customPath) - if err != nil { - log.Error("Unable to check if %s is a file. Error: %v", customPath, err) - } - if isFile { - return os.ReadFile(customPath) - } - - staticPath := path.Join(setting.StaticRootPath, "options", name) - - isFile, err = util.IsFile(staticPath) - if err != nil { - log.Error("Unable to check if %s is a file. Error: %v", staticPath, err) - } - if isFile { - return os.ReadFile(staticPath) - } - - return []byte{}, fmt.Errorf("Asset file does not exist: %s", name) +// fileFromOptionsDir is a helper to read files from custom or static path. +func fileFromOptionsDir(elems ...string) ([]byte, error) { + return readLocalFile([]string{setting.CustomPath, setting.StaticRootPath}, "options", elems...) } // IsDynamic will return false when using embedded data (-tags bindata) |