/
piper_runner_host.go
56 lines (44 loc) · 1.1 KB
/
piper_runner_host.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package dagger
import (
"fmt"
"net/url"
"strings"
pkgwd "github.com/octohelm/piper/pkg/wd"
)
func ParsePiperRunnerHosts(str string) ([]PiperRunnerHost, error) {
settings := strings.Split(str, ",")
runnerHosts := make([]PiperRunnerHost, 0, len(settings))
for i, e := range settings {
u, err := url.Parse(e)
if err != nil {
return nil, err
}
runnerHost := PiperRunnerHost{}
if u.Host == "default" || u.Host == "" {
runnerHost.RunnerHost = DefaultRunnerHost
} else {
runnerHost.RunnerHost = fmt.Sprintf("%s://%s", u.Scheme, u.Host)
}
if u.User != nil {
runnerHost.Name = u.User.Username()
} else {
runnerHost.Name = fmt.Sprintf("piper-runner-%d", i)
}
if platforms, ok := u.Query()["platform"]; ok {
for _, platform := range platforms {
p, err := pkgwd.ParsePlatform(platform)
if err != nil {
return nil, err
}
runnerHost.Platforms = append(runnerHost.Platforms, *p)
}
}
runnerHosts = append(runnerHosts, runnerHost)
}
return runnerHosts, nil
}
type PiperRunnerHost struct {
Name string
RunnerHost string
Platforms []pkgwd.Platform
}