-
Notifications
You must be signed in to change notification settings - Fork 289
/
manifest_target.go
86 lines (72 loc) · 1.9 KB
/
manifest_target.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package store
import (
"fmt"
"strings"
"github.com/windmilleng/tilt/internal/ospath"
"github.com/windmilleng/tilt/pkg/model"
)
type ManifestTarget struct {
Manifest model.Manifest
State *ManifestState
}
func NewManifestTarget(m model.Manifest) *ManifestTarget {
return &ManifestTarget{
Manifest: m,
State: newManifestState(m.Name),
}
}
func (t ManifestTarget) Spec() model.TargetSpec {
return t.Manifest
}
func (t ManifestTarget) Status() model.TargetStatus {
return t.State
}
var _ model.Target = &ManifestTarget{}
func (t *ManifestTarget) Facets(secrets model.SecretSet) []model.Facet {
var ret []model.Facet
if !t.Status().LastBuild().Empty() {
ret = append(ret, model.Facet{
Name: "Last Build Log",
Value: t.Status().LastBuild().Log.String(),
})
}
if len(t.State.BuildHistory) != 0 {
sb := strings.Builder{}
histories := t.State.BuildHistory
if len(histories) > 20 {
histories = histories[:20]
}
for _, br := range histories {
sb.WriteString("Build finished:\n")
sb.WriteString(fmt.Sprintf(" Reason: %s\n", br.Reason.String()))
sb.WriteString(" Result: ")
if br.Error == nil {
sb.WriteString("Success")
} else {
sb.WriteString(fmt.Sprintf("%v", br.Error))
}
sb.WriteString("\n")
sb.WriteString(fmt.Sprintf(" Duration: %s\n", br.Duration().String()))
if len(br.Edits) > 0 {
edits := ospath.FileListDisplayNames(t.Manifest.LocalPaths(), br.Edits)
sb.WriteString(fmt.Sprintf(" Changed files: %s\n", strings.Join(edits, ", ")))
}
sb.WriteString(("\n\n"))
}
ret = append(ret, model.Facet{
Name: "Build History",
Value: sb.String(),
})
}
for _, targetID := range t.Spec().DependencyIDs() {
bs := t.State.BuildStatus(targetID)
if bs.LastResult != nil {
ret = append(ret, bs.LastResult.Facets()...)
}
}
for i, f := range ret {
f.Value = string(secrets.Scrub([]byte(f.Value)))
ret[i] = f
}
return ret
}