github.com/grahambrereton-form3/tilt@v0.10.18/internal/store/manifest_target.go (about) 1 package store 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/windmilleng/tilt/internal/ospath" 8 "github.com/windmilleng/tilt/pkg/model" 9 ) 10 11 type ManifestTarget struct { 12 Manifest model.Manifest 13 State *ManifestState 14 } 15 16 func NewManifestTarget(m model.Manifest) *ManifestTarget { 17 return &ManifestTarget{ 18 Manifest: m, 19 State: newManifestState(m.Name), 20 } 21 } 22 23 func (t ManifestTarget) Spec() model.TargetSpec { 24 return t.Manifest 25 } 26 27 func (t ManifestTarget) Status() model.TargetStatus { 28 return t.State 29 } 30 31 var _ model.Target = &ManifestTarget{} 32 33 func (t *ManifestTarget) Facets(secrets model.SecretSet) []model.Facet { 34 var ret []model.Facet 35 36 if !t.Status().LastBuild().Empty() { 37 ret = append(ret, model.Facet{ 38 Name: "Last Build Log", 39 Value: t.Status().LastBuild().Log.String(), 40 }) 41 } 42 43 if len(t.State.BuildHistory) != 0 { 44 sb := strings.Builder{} 45 histories := t.State.BuildHistory 46 if len(histories) > 20 { 47 histories = histories[:20] 48 } 49 for _, br := range histories { 50 sb.WriteString("Build finished:\n") 51 sb.WriteString(fmt.Sprintf(" Reason: %s\n", br.Reason.String())) 52 sb.WriteString(" Result: ") 53 if br.Error == nil { 54 sb.WriteString("Success") 55 } else { 56 sb.WriteString(fmt.Sprintf("%v", br.Error)) 57 } 58 sb.WriteString("\n") 59 sb.WriteString(fmt.Sprintf(" Duration: %s\n", br.Duration().String())) 60 if len(br.Edits) > 0 { 61 edits := ospath.FileListDisplayNames(t.Manifest.LocalPaths(), br.Edits) 62 sb.WriteString(fmt.Sprintf(" Changed files: %s\n", strings.Join(edits, ", "))) 63 } 64 sb.WriteString(("\n\n")) 65 } 66 67 ret = append(ret, model.Facet{ 68 Name: "Build History", 69 Value: sb.String(), 70 }) 71 } 72 73 for _, targetID := range t.Spec().DependencyIDs() { 74 bs := t.State.BuildStatus(targetID) 75 if bs.LastResult != nil { 76 ret = append(ret, bs.LastResult.Facets()...) 77 } 78 } 79 80 for i, f := range ret { 81 f.Value = string(secrets.Scrub([]byte(f.Value))) 82 ret[i] = f 83 } 84 85 return ret 86 }