forked from cloudfoundry/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
v3_poll_stage.go
51 lines (48 loc) · 1.23 KB
/
v3_poll_stage.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
package shared
import (
"code.cloudfoundry.org/cli/actor/v3action"
"code.cloudfoundry.org/cli/command"
)
func PollStage(buildStream <-chan v3action.Build, warningsStream <-chan v3action.Warnings, errStream <-chan error, logStream <-chan *v3action.LogMessage, logErrStream <-chan error, ui command.UI) (error, string) {
var closedBuildStream, closedWarningsStream, closedErrStream bool
var dropletGUID string
for {
select {
case build, ok := <-buildStream:
if !ok {
closedBuildStream = true
break
}
dropletGUID = build.Droplet.GUID
ui.DisplayNewline()
ui.DisplayText("droplet: {{.DropletGUID}}", map[string]interface{}{"DropletGUID": dropletGUID})
case log, ok := <-logStream:
if !ok {
break
}
if log.Staging() {
ui.DisplayLogMessage(log, false)
}
case warnings, ok := <-warningsStream:
if !ok {
closedWarningsStream = true
break
}
ui.DisplayWarnings(warnings)
case logErr, ok := <-logErrStream:
if !ok {
break
}
ui.DisplayWarning(logErr.Error())
case err, ok := <-errStream:
if !ok {
closedErrStream = true
break
}
return HandleError(err), ""
}
if closedBuildStream && closedWarningsStream && closedErrStream {
return nil, dropletGUID
}
}
}