diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2020-03-28 13:53:10 +0100 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2020-03-28 13:53:10 +0100 |
| commit | ed2b9374599cc00467b1c27121318748cc0d3f49 (patch) | |
| tree | 65e3200a0b69817b24ae772223d1d852a52458af /pkg/rtree/remote.go | |
| parent | 1ff86053ddef8de3247909434e0bd7000c060f2a (diff) | |
| download | gofu-ed2b9374599cc00467b1c27121318748cc0d3f49.tar.gz | |
rename pkg/ to internal/
Diffstat (limited to 'pkg/rtree/remote.go')
| -rw-r--r-- | pkg/rtree/remote.go | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/pkg/rtree/remote.go b/pkg/rtree/remote.go deleted file mode 100644 index 0c4e880..0000000 --- a/pkg/rtree/remote.go +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* -* -* Copyright 2017 Stefan Majewsky <majewsky@gmx.net> -* -* This program is free software: you can redistribute it and/or modify it under -* the terms of the GNU General Public License as published by the Free Software -* Foundation, either version 3 of the License, or (at your option) any later -* version. -* -* This program is distributed in the hope that it will be useful, but WITHOUT ANY -* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -* A PARTICULAR PURPOSE. See the GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License along with -* this program. If not, see <http://www.gnu.org/licenses/>. -* -*******************************************************************************/ - -package rtree - -import ( - "net/url" - "path/filepath" - "regexp" - "strings" -) - -//ExpandRemoteURL derive the canonical URL for a given remote by substituting -//aliases defined in the system-wide and user-global Git config. For example, -//with -// -// $ cat /etc/gitconfig -// [url "git://github.com/"] -// insteadOf = gh: -// -//and the input "gh:foo/bar", this function returns "git://github.com/foo/bar". -func ExpandRemoteURL(remoteURL string) string { - var best *RemoteAlias - for _, current := range RemoteAliases { - if strings.HasPrefix(remoteURL, current.Alias) { - if best == nil || len(best.Alias) < len(current.Alias) { - best = current - } - } - } - if best == nil { - return remoteURL - } - return best.Replacement + strings.TrimPrefix(remoteURL, best.Alias) -} - -//This regex recognizes the scp-like syntax for git remotes -//(i.e. "[user@]example.org:path/to/repo") as specified by the "GIT URLS" -//section of man:git-clone(1). -var scpSyntaxRx = regexp.MustCompile(`^(?:[^/@:]+@)?([^/:]+\.[^/:]+):(.+)$`) - -//CheckoutPathForRemoteURL derives the checkout path for a remote URL that has -//already been expanded with ExpandRemoteURL() if necessary. -// -// "https://example.org/foo/bar" -> "example.org/foo/bar" -// "git@example.org:foo/bar" -> "example.org/foo/bar" -// -func CheckoutPathForRemoteURL(remoteURL string) (string, error) { - match := scpSyntaxRx.FindStringSubmatch(remoteURL) - if match != nil { - //match[1] is the hostname, match[2] is the path to the repo - return filepath.Join(match[1], match[2]), nil - } - - u, err := url.Parse(remoteURL) - if err != nil { - return "", err - } - return filepath.Join(u.Hostname(), u.Path), nil -} |
