aboutsummaryrefslogtreecommitdiffstats
path: root/modules/repository/temp.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2022-05-09 00:46:32 +0800
committerGitHub <noreply@github.com>2022-05-08 18:46:32 +0200
commit4ca1d7547a2c32cc65ca23d1a7698d1a8c921d65 (patch)
treefee132403adea441987ce25809c764e00fd962cd /modules/repository/temp.go
parentd4834071da9ce010fd4677ef339c598dd23dc130 (diff)
downloadgitea-4ca1d7547a2c32cc65ca23d1a7698d1a8c921d65.tar.gz
gitea-4ca1d7547a2c32cc65ca23d1a7698d1a8c921d65.zip
Move some helper files out of models (#19355)
* Move some helper files out of models * Some improvements Co-authored-by: delvh <dev.lh@web.de>
Diffstat (limited to 'modules/repository/temp.go')
-rw-r--r--modules/repository/temp.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/modules/repository/temp.go b/modules/repository/temp.go
new file mode 100644
index 0000000000..5947d29965
--- /dev/null
+++ b/modules/repository/temp.go
@@ -0,0 +1,47 @@
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package repository
+
+import (
+ "fmt"
+ "os"
+ "path"
+ "path/filepath"
+
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/util"
+)
+
+// LocalCopyPath returns the local repository temporary copy path.
+func LocalCopyPath() string {
+ if filepath.IsAbs(setting.Repository.Local.LocalCopyPath) {
+ return setting.Repository.Local.LocalCopyPath
+ }
+ return path.Join(setting.AppDataPath, setting.Repository.Local.LocalCopyPath)
+}
+
+// CreateTemporaryPath creates a temporary path
+func CreateTemporaryPath(prefix string) (string, error) {
+ if err := os.MkdirAll(LocalCopyPath(), os.ModePerm); err != nil {
+ log.Error("Unable to create localcopypath directory: %s (%v)", LocalCopyPath(), err)
+ return "", fmt.Errorf("Failed to create localcopypath directory %s: %v", LocalCopyPath(), err)
+ }
+ basePath, err := os.MkdirTemp(LocalCopyPath(), prefix+".git")
+ if err != nil {
+ log.Error("Unable to create temporary directory: %s-*.git (%v)", prefix, err)
+ return "", fmt.Errorf("Failed to create dir %s-*.git: %v", prefix, err)
+
+ }
+ return basePath, nil
+}
+
+// RemoveTemporaryPath removes the temporary path
+func RemoveTemporaryPath(basePath string) error {
+ if _, err := os.Stat(basePath); !os.IsNotExist(err) {
+ return util.RemoveAll(basePath)
+ }
+ return nil
+}