Skip to content

Commit e50e60b

Browse files
authored
Merge pull request #411 from hezhizhen/logger-support-no-color
feat: support NO_COLOR environment variable
2 parents 5bf53dc + cf15ec2 commit e50e60b

File tree

2 files changed

+87
-28
lines changed

2 files changed

+87
-28
lines changed

logger/log.go

Lines changed: 51 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,63 @@ import (
44
"fmt"
55
"io"
66
"os"
7+
"strings"
78

89
"github.com/motemen/go-colorine"
910
)
1011

11-
var logger = colorine.NewLogger(
12-
colorine.Prefixes{
13-
"git": colorine.Verbose,
14-
"hg": colorine.Verbose,
15-
"svn": colorine.Verbose,
16-
"darcs": colorine.Verbose,
17-
"pijul": colorine.Verbose,
18-
"bzr": colorine.Verbose,
19-
"fossil": colorine.Verbose,
20-
"skip": colorine.Verbose,
21-
"cd": colorine.Verbose,
22-
"resolved": colorine.Verbose,
23-
24-
"open": colorine.Warn,
25-
"exists": colorine.Warn,
26-
"warning": colorine.Warn,
12+
var (
13+
NoColor = colorine.TextStyle{Foreground: colorine.None, Background: colorine.None}
14+
VerboseColor = colorine.Verbose // white
15+
InfoColor = colorine.Info // green
16+
NoticeColor = colorine.Notice // blue
17+
WarnColor = colorine.Warn // yellow
18+
ErrorColor = colorine.Error // red
19+
)
2720

28-
"authorized": colorine.Notice,
21+
var (
22+
logger = colorine.NewLogger( // default logger with color
23+
colorine.Prefixes{
24+
// verbose
25+
"git": VerboseColor,
26+
"hg": VerboseColor,
27+
"svn": VerboseColor,
28+
"darcs": VerboseColor,
29+
"pijul": VerboseColor,
30+
"bzr": VerboseColor,
31+
"fossil": VerboseColor,
32+
"skip": VerboseColor,
33+
"cd": VerboseColor,
34+
"resolved": VerboseColor,
35+
// notice
36+
"authorized": NoticeColor,
37+
// warn
38+
"open": WarnColor,
39+
"exists": WarnColor,
40+
"warning": WarnColor,
41+
// error
42+
"error": ErrorColor,
43+
},
44+
InfoColor, // default is info
45+
)
2946

30-
"error": colorine.Error,
31-
}, colorine.Info)
47+
loggerWithoutColor = colorine.NewLogger(
48+
colorine.Prefixes{},
49+
NoColor,
50+
)
51+
)
3252

3353
func init() {
54+
SelectLogger()
55+
}
56+
57+
func SelectLogger() {
58+
v := os.Getenv("NO_COLOR")
59+
60+
if strings.ToLower(v) == "true" {
61+
logger = loggerWithoutColor
62+
}
63+
3464
SetOutput(os.Stderr)
3565
}
3666

@@ -39,12 +69,12 @@ func SetOutput(w io.Writer) {
3969
logger.SetOutput(w)
4070
}
4171

42-
// Log output
72+
// Log outputs log
4373
func Log(prefix, message string) {
4474
logger.Log(prefix, message)
4575
}
4676

47-
// Logf output log with format
77+
// Logf outputs log with format
4878
func Logf(prefix, msg string, args ...interface{}) {
4979
Log(prefix, fmt.Sprintf(msg, args...))
5080
}

logger/log_test.go

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,41 @@
11
package logger
22

3-
import "testing"
3+
import (
4+
"os"
5+
"testing"
6+
)
47

58
func TestLog(t *testing.T) {
6-
Log("default", "shows this color")
7-
Log("error", "shows this color")
8-
Log("open", "shows this color")
9-
Log("authorized", "shows this color")
10-
Log("skip", "shows this color")
11-
Log("git", "shows this color")
9+
t.Run("with color", func(t *testing.T) {
10+
t.Logf("NO_COLOR: %s", os.Getenv("NO_COLOR"))
11+
SelectLogger()
12+
// info
13+
Log("default", "should be green")
14+
// verbose
15+
Log("git", "should be white")
16+
Log("skip", "should be white")
17+
// notice
18+
Log("authorized", "should be blue")
19+
// warn
20+
Log("open", "should be yellow")
21+
// error
22+
Log("error", "should be red")
23+
})
24+
25+
t.Run("without color", func(t *testing.T) {
26+
t.Setenv("NO_COLOR", "true")
27+
t.Logf("NO_COLOR: %s", os.Getenv("NO_COLOR"))
28+
SelectLogger()
29+
// info
30+
Log("default", "should be none")
31+
// verbose
32+
Log("git", "should be none")
33+
Log("skip", "should be none")
34+
// notice
35+
Log("authorized", "should be none")
36+
// warn
37+
Log("open", "should be none")
38+
// error
39+
Log("error", "should be none")
40+
})
1241
}

0 commit comments

Comments
 (0)