/
docker_login_step.go
66 lines (54 loc) · 1.33 KB
/
docker_login_step.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
57
58
59
60
61
62
63
64
65
66
// import github.com/dmcsorley/goblin/cibuild
package cibuild
import (
"fmt"
"github.com/dmcsorley/goblin/command"
"github.com/dmcsorley/goblin/config"
"os/exec"
)
type DockerLoginStep struct {
index int
username string
password string
}
func newLoginStep(index int, sr *config.StepRecord, vv ValueValidator) (Stepper, error) {
if !sr.HasParameter(UsernameKey) {
return stepParamRequired(DockerLogin, UsernameKey)
}
err := vv.ValidateValue(sr.Username)
if err != nil {
return stepParamError(DockerLogin, UsernameKey, err)
}
if !sr.HasParameter(PasswordKey) {
return stepParamRequired(DockerLogin, PasswordKey)
}
err = vv.ValidateValue(sr.Password)
if err != nil {
return stepParamError(DockerLogin, PasswordKey, err)
}
return &DockerLoginStep{index: index, username: sr.Username, password: sr.Password}, nil
}
func (dls *DockerLoginStep) Step(se StepEnvironment) error {
pfx := se.StepPrefix(dls.index)
username, err := se.ResolveValues(dls.username)
if err != nil {
return err
}
password, err := se.ResolveValues(dls.password)
if err != nil {
return err
}
fmt.Println(pfx, DockerLogin, username)
cmd := exec.Command(
"docker",
"login",
"-p",
password,
"-u",
username,
)
return command.Run(cmd, pfx)
}
func (dls *DockerLoginStep) Cleanup(se StepEnvironment) {
// intentionally left blank
}