You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
910 B
Go
39 lines
910 B
Go
4 years ago
|
package buildflags
|
||
6 years ago
|
|
||
|
import (
|
||
|
"strings"
|
||
|
|
||
|
"github.com/moby/buildkit/session"
|
||
|
"github.com/moby/buildkit/session/sshforward/sshprovider"
|
||
4 years ago
|
"github.com/moby/buildkit/util/gitutil"
|
||
6 years ago
|
)
|
||
|
|
||
|
func ParseSSHSpecs(sl []string) (session.Attachable, error) {
|
||
|
configs := make([]sshprovider.AgentConfig, 0, len(sl))
|
||
|
for _, v := range sl {
|
||
|
c, err := parseSSH(v)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
configs = append(configs, *c)
|
||
|
}
|
||
|
return sshprovider.NewSSHAgentProvider(configs)
|
||
|
}
|
||
|
|
||
|
func parseSSH(value string) (*sshprovider.AgentConfig, error) {
|
||
|
parts := strings.SplitN(value, "=", 2)
|
||
|
cfg := sshprovider.AgentConfig{
|
||
|
ID: parts[0],
|
||
|
}
|
||
|
if len(parts) > 1 {
|
||
|
cfg.Paths = strings.Split(parts[1], ",")
|
||
|
}
|
||
|
return &cfg, nil
|
||
|
}
|
||
4 years ago
|
|
||
|
// IsGitSSH returns true if the given repo URL is accessed over ssh
|
||
|
func IsGitSSH(url string) bool {
|
||
|
_, gitProtocol := gitutil.ParseProtocol(url)
|
||
|
return gitProtocol == gitutil.SSHProtocol
|
||
|
}
|