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  }