12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package gitutil
- import (
- "strings"
- "github.com/moby/buildkit/util/sshutil"
- )
- const (
- HTTPProtocol = iota + 1
- HTTPSProtocol
- SSHProtocol
- GitProtocol
- UnknownProtocol
- )
- // ParseProtocol parses a git URL and returns the remote url and protocol type
- func ParseProtocol(remote string) (string, int) {
- prefixes := map[string]int{
- "http://": HTTPProtocol,
- "https://": HTTPSProtocol,
- "git://": GitProtocol,
- "ssh://": SSHProtocol,
- }
- protocolType := UnknownProtocol
- for prefix, potentialType := range prefixes {
- if strings.HasPrefix(remote, prefix) {
- remote = strings.TrimPrefix(remote, prefix)
- protocolType = potentialType
- }
- }
- if protocolType == UnknownProtocol && sshutil.IsImplicitSSHTransport(remote) {
- protocolType = SSHProtocol
- }
- // remove name from ssh
- if protocolType == SSHProtocol {
- parts := strings.SplitN(remote, "@", 2)
- if len(parts) == 2 {
- remote = parts[1]
- }
- }
- return remote, protocolType
- }
|