File: color.go

package info (click to toggle)
golang-github-powerman-check 1.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 352 kB
  • sloc: javascript: 3; makefile: 2
file content (40 lines) | stat: -rw-r--r-- 885 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package check

import (
	"os"
	"strings"
)

//nolint:gochecknoglobals // By design.
var (
	ansiGreen  = "\033[32m"
	ansiYellow = "\033[33m"
	ansiRed    = "\033[31m"
	ansiReset  = "\033[0m"
)

func init() { //nolint:gochecknoinits // By design.
	if !wantColor() {
		ansiGreen, ansiYellow, ansiRed, ansiReset = "", "", "", ""
	}
}

func wantColor() bool {
	return strings.Contains(os.Getenv("TERM"), "color") &&
		(isTerminal() || os.Getenv("GO_TEST_COLOR") != "")
}

func colouredDiff(diff string) string {
	lines := strings.SplitAfter(diff, "\n")
	for i := range lines {
		switch {
		case strings.HasPrefix(lines[i], "--- "):
		case strings.HasPrefix(lines[i], "+++ "):
		case strings.HasPrefix(lines[i], "-"):
			lines[i] = ansiGreen + lines[i] + ansiReset
		case strings.HasPrefix(lines[i], "+"):
			lines[i] = ansiRed + lines[i] + ansiReset
		}
	}
	return strings.Join(lines, "")
}