summaryrefslogtreecommitdiffstats
path: root/modules/options/dynamic.go
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-03-22 04:02:49 +0800
committerGitHub <noreply@github.com>2023-03-21 16:02:49 -0400
commitce9dee5a1e8ae670c97621bca409d8cf43a90102 (patch)
tree6c9d8922dfae4bdcc1785340f2a866f805259988 /modules/options/dynamic.go
parent253a00aaac6b17346927e42c709f3f96672caaf3 (diff)
downloadgitea-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.go48
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)