github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/app_examiner/command_factory/presentation/presentation.go (about)

     1  package presentation
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/cloudfoundry-incubator/ltc/app_examiner"
     8  	"github.com/cloudfoundry-incubator/ltc/terminal/colors"
     9  	"github.com/cloudfoundry-incubator/receptor"
    10  )
    11  
    12  func ColorInstanceState(instanceInfo app_examiner.InstanceInfo) string {
    13  	colorFunc := colors.NoColor
    14  
    15  	state := receptor.ActualLRPState(instanceInfo.State)
    16  	switch {
    17  	case state == receptor.ActualLRPStateRunning:
    18  		colorFunc = colors.Green
    19  	case state == receptor.ActualLRPStateClaimed:
    20  		colorFunc = colors.Yellow
    21  	case state == receptor.ActualLRPStateUnclaimed && instanceInfo.PlacementError == "":
    22  		colorFunc = colors.Cyan
    23  	case state == receptor.ActualLRPStateUnclaimed && instanceInfo.PlacementError != "":
    24  		colorFunc = colors.Red
    25  	case state == receptor.ActualLRPStateInvalid:
    26  		colorFunc = colors.Red
    27  	case state == receptor.ActualLRPStateCrashed:
    28  		colorFunc = colors.Red
    29  	}
    30  
    31  	return colorFunc(string(instanceInfo.State))
    32  }
    33  
    34  func PadAndColorInstanceState(instanceInfo app_examiner.InstanceInfo) string {
    35  	padLength := 0
    36  	if len(ColorInstanceState(instanceInfo)) < len(colors.NoColor("UNCLAIMED")) {
    37  		padLength = len("UNCLAIMED") - len(instanceInfo.State)
    38  	}
    39  
    40  	return fmt.Sprintf("%s%s", ColorInstanceState(instanceInfo), strings.Repeat(" ", padLength))
    41  }