package cloud import ( "regexp" "github.com/mitchellh/colorstring" ) // TODO SvH: This file should be deleted and the type cliColorize should be // renamed back to Colorize as soon as we can pass -no-color to the backend. // colorsRe is used to find ANSI escaped color codes. var colorsRe = regexp.MustCompile("\033\\[\\d{1,3}m") // Colorer is the interface that must be implemented to colorize strings. type Colorer interface { Color(v string) string } // Colorize is used to print output when the -no-color flag is used. It will // strip all ANSI escaped color codes which are set while the operation was // executed in Terraform Enterprise. // // When Terraform Enterprise supports run specific variables, this code can be // removed as we can then pass the CLI flag to the backend and prevent the color // codes from being written to the output. type Colorize struct { cliColor *colorstring.Colorize } // Color will strip all ANSI escaped color codes and return a uncolored string. func (c *Colorize) Color(v string) string { return colorsRe.ReplaceAllString(c.cliColor.Color(v), "") } // Colorize returns the Colorize structure that can be used for colorizing // output. This is guaranteed to always return a non-nil value and so is useful // as a helper to wrap any potentially colored strings. func (b *Cloud) Colorize() Colorer { if b.CLIColor != nil && !b.CLIColor.Disable { return b.CLIColor } if b.CLIColor != nil { return &Colorize{cliColor: b.CLIColor} } return &Colorize{cliColor: &colorstring.Colorize{ Colors: colorstring.DefaultColors, Disable: true, }} }