github.com/defang-io/defang/src@v0.0.0-20240505002154-bdf411911834/cmd/cli/command/color.go (about)

     1  package command
     2  
     3  import "fmt"
     4  
     5  type ColorMode string
     6  
     7  const (
     8  	// ColorNever disables color output.
     9  	ColorNever ColorMode = "never"
    10  	// ColorAuto enables color output only if the output is connected to a terminal.
    11  	ColorAuto ColorMode = "auto"
    12  	// ColorAlways enables color output.
    13  	ColorAlways ColorMode = "always"
    14  	// ColorRaw disables color output and does not escape any characters.
    15  	// ColorRaw ColorMode = "raw"
    16  )
    17  
    18  var allColorModes = []ColorMode{
    19  	ColorNever,
    20  	ColorAuto,
    21  	ColorAlways,
    22  }
    23  
    24  func (c ColorMode) String() string {
    25  	return string(c)
    26  }
    27  
    28  func (c *ColorMode) Set(value string) error {
    29  	for _, colorMode := range allColorModes {
    30  		if colorMode.String() == value {
    31  			*c = colorMode
    32  			return nil
    33  		}
    34  	}
    35  	return fmt.Errorf("color mode not one of %v", allColorModes)
    36  }
    37  
    38  func (c ColorMode) Type() string {
    39  	return "color-mode"
    40  }