github.com/pdecat/terraform@v0.11.9-beta1/backend/remote/colorize.go (about) 1 package remote 2 3 import ( 4 "regexp" 5 6 "github.com/mitchellh/colorstring" 7 ) 8 9 // colorsRe is used to find ANSI escaped color codes. 10 var colorsRe = regexp.MustCompile("\033\\[\\d{1,3}m") 11 12 // Colorer is the interface that must be implemented to colorize strings. 13 type Colorer interface { 14 Color(v string) string 15 } 16 17 // Colorize is used to print output when the -no-color flag is used. It will 18 // strip all ANSI escaped color codes which are set while the operation was 19 // executed in Terraform Enterprise. 20 // 21 // When Terraform Enterprise supports run specific variables, this code can be 22 // removed as we can then pass the CLI flag to the backend and prevent the color 23 // codes from being written to the output. 24 type Colorize struct { 25 cliColor *colorstring.Colorize 26 } 27 28 // Color will strip all ANSI escaped color codes and return a uncolored string. 29 func (c *Colorize) Color(v string) string { 30 return colorsRe.ReplaceAllString(c.cliColor.Color(v), "") 31 } 32 33 // Colorize returns the Colorize structure that can be used for colorizing 34 // output. This is guaranteed to always return a non-nil value and so is useful 35 // as a helper to wrap any potentially colored strings. 36 func (b *Remote) Colorize() Colorer { 37 if b.CLIColor != nil && !b.CLIColor.Disable { 38 return b.CLIColor 39 } 40 if b.CLIColor != nil { 41 return &Colorize{cliColor: b.CLIColor} 42 } 43 return &Colorize{cliColor: &colorstring.Colorize{ 44 Colors: colorstring.DefaultColors, 45 Disable: true, 46 }} 47 }