-
Notifications
You must be signed in to change notification settings - Fork 582
/
summary.go
65 lines (53 loc) · 1.48 KB
/
summary.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
package cnbutils
import (
"bytes"
"strings"
"github.com/SAP/jenkins-library/pkg/log"
)
type BuildSummary struct {
Builder string
LifecycleVersion string
Images []*ImageSummary
}
func (bs *BuildSummary) Print() {
log.Entry().Infoln("")
log.Entry().Info("*** Build Summary ***")
log.Entry().Infof(" Builder: %q", bs.Builder)
log.Entry().Infof(" Lifecycle: %q", bs.LifecycleVersion)
log.Entry().Infof(" %d image(s) build:", len(bs.Images))
log.Entry().Infoln("")
for _, image := range bs.Images {
image.Print()
log.Entry().Infoln("")
}
}
func NewBuildSummary(builder string, utils BuildUtils) *BuildSummary {
return &BuildSummary{
Builder: builder,
LifecycleVersion: lifecycleVersion(utils),
}
}
type ImageSummary struct {
ImageRef string
ProjectDescriptor string
Buildpacks []string
EnvVars []string
}
func (is *ImageSummary) Print() {
log.Entry().Infof(" Image: %q", is.ImageRef)
log.Entry().Infof(" Project descriptor: %q", is.ProjectDescriptor)
log.Entry().Infof(" Env: %q", strings.Join(is.EnvVars, ", "))
}
func (is *ImageSummary) AddEnv(env map[string]interface{}) {
for key := range env {
is.EnvVars = append(is.EnvVars, key)
}
}
func lifecycleVersion(utils BuildUtils) string {
currentStdout := utils.GetStdout()
buf := bytes.NewBufferString("")
utils.Stdout(buf)
_ = utils.RunExecutable("/cnb/lifecycle/lifecycle", "-version")
utils.Stdout(currentStdout)
return strings.Trim(buf.String(), "\n")
}