aboutsummaryrefslogtreecommitdiffstats
path: root/modules/options/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/options/repo.go')
-rw-r--r--modules/options/repo.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/modules/options/repo.go b/modules/options/repo.go
new file mode 100644
index 0000000000..1480f78081
--- /dev/null
+++ b/modules/options/repo.go
@@ -0,0 +1,44 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package options
+
+import (
+ "fmt"
+ "os"
+ "path"
+ "strings"
+
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/util"
+)
+
+// GetRepoInitFile returns repository init files
+func GetRepoInitFile(tp, name string) ([]byte, error) {
+ cleanedName := strings.TrimLeft(path.Clean("/"+name), "/")
+ relPath := path.Join("options", tp, cleanedName)
+
+ // Use custom file when available.
+ customPath := path.Join(setting.CustomPath, relPath)
+ 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)
+ }
+
+ switch tp {
+ case "readme":
+ return Readme(cleanedName)
+ case "gitignore":
+ return Gitignore(cleanedName)
+ case "license":
+ return License(cleanedName)
+ case "label":
+ return Labels(cleanedName)
+ default:
+ return []byte{}, fmt.Errorf("Invalid init file type")
+ }
+}