aboutsummaryrefslogtreecommitdiff
path: root/internal/repoutil/repoutil.go
diff options
context:
space:
mode:
authorJoe Chen <jc@unknwon.io>2022-06-25 18:07:39 +0800
committerGitHub <noreply@github.com>2022-06-25 18:07:39 +0800
commit083c3ee659c6c5542687f3bafae68cbc24dbc90f (patch)
tree0103bf3b5c5ebfccd368a7cb6a425a521fd669d9 /internal/repoutil/repoutil.go
parent9df4e3ae3c555a86f691f0d78a43834842e77d8b (diff)
db: refactor "action" table to use GORM (#7054)
Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
Diffstat (limited to 'internal/repoutil/repoutil.go')
-rw-r--r--internal/repoutil/repoutil.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/internal/repoutil/repoutil.go b/internal/repoutil/repoutil.go
new file mode 100644
index 00000000..658f896f
--- /dev/null
+++ b/internal/repoutil/repoutil.go
@@ -0,0 +1,62 @@
+// Copyright 2022 The Gogs 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 repoutil
+
+import (
+ "fmt"
+ "path/filepath"
+ "strings"
+
+ "gogs.io/gogs/internal/conf"
+)
+
+// CloneLink represents different types of clone URLs of repository.
+type CloneLink struct {
+ SSH string
+ HTTPS string
+}
+
+// NewCloneLink returns clone URLs using given owner and repository name.
+func NewCloneLink(owner, repo string, isWiki bool) *CloneLink {
+ if isWiki {
+ repo += ".wiki"
+ }
+
+ cl := new(CloneLink)
+ if conf.SSH.Port != 22 {
+ cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", conf.App.RunUser, conf.SSH.Domain, conf.SSH.Port, owner, repo)
+ } else {
+ cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", conf.App.RunUser, conf.SSH.Domain, owner, repo)
+ }
+ cl.HTTPS = HTTPSCloneURL(owner, repo)
+ return cl
+}
+
+// HTTPSCloneURL returns HTTPS clone URL using given owner and repository name.
+func HTTPSCloneURL(owner, repo string) string {
+ return fmt.Sprintf("%s%s/%s.git", conf.Server.ExternalURL, owner, repo)
+}
+
+// HTMLURL returns HTML URL using given owner and repository name.
+func HTMLURL(owner, repo string) string {
+ return conf.Server.ExternalURL + owner + "/" + repo
+}
+
+// CompareCommitsPath returns the comparison path using given owner, repository,
+// and commit IDs.
+func CompareCommitsPath(owner, repo, oldCommitID, newCommitID string) string {
+ return fmt.Sprintf("%s/%s/compare/%s...%s", owner, repo, oldCommitID, newCommitID)
+}
+
+// UserPath returns the absolute path for storing user repositories.
+func UserPath(user string) string {
+ return filepath.Join(conf.Repository.Root, strings.ToLower(user))
+}
+
+// RepositoryPath returns the absolute path using given user and repository
+// name.
+func RepositoryPath(owner, repo string) string {
+ return filepath.Join(UserPath(owner), strings.ToLower(repo)+".git")
+}