From 083c3ee659c6c5542687f3bafae68cbc24dbc90f Mon Sep 17 00:00:00 2001 From: Joe Chen Date: Sat, 25 Jun 2022 18:07:39 +0800 Subject: db: refactor "action" table to use GORM (#7054) Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com> --- internal/repoutil/repoutil.go | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 internal/repoutil/repoutil.go (limited to 'internal/repoutil/repoutil.go') 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") +} -- cgit v1.2.3