diff options
author | Joe Chen <jc@unknwon.io> | 2022-06-25 18:07:39 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-25 18:07:39 +0800 |
commit | 083c3ee659c6c5542687f3bafae68cbc24dbc90f (patch) | |
tree | 0103bf3b5c5ebfccd368a7cb6a425a521fd669d9 /internal/repoutil/repoutil.go | |
parent | 9df4e3ae3c555a86f691f0d78a43834842e77d8b (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.go | 62 |
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") +} |