mirror of https://github.com/gogs/gogs.git
76 lines
2.4 KiB
Go
76 lines
2.4 KiB
Go
// 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"
|
|
"strconv"
|
|
"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")
|
|
}
|
|
|
|
// RepositoryLocalPath returns the absolute path of the repository local copy
|
|
// with the given ID.
|
|
func RepositoryLocalPath(repoID int64) string {
|
|
return filepath.Join(conf.Server.AppDataPath, "tmp", "local-repo", strconv.FormatInt(repoID, 10))
|
|
}
|
|
|
|
// RepositoryLocalWikiPath returns the absolute path of the repository local
|
|
// wiki copy with the given ID.
|
|
func RepositoryLocalWikiPath(repoID int64) string {
|
|
return filepath.Join(conf.Server.AppDataPath, "tmp", "local-wiki", strconv.FormatInt(repoID, 10))
|
|
}
|