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 }