mirror of
https://github.com/x-motemen/ghq.git
synced 2026-09-10 07:26:27 -04:00
Merge pull request #411 from hezhizhen/logger-support-no-color
feat: support NO_COLOR environment variable
This commit is contained in:
commit
e50e60bbc2
|
|
@ -4,33 +4,63 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/motemen/go-colorine"
|
||||
)
|
||||
|
||||
var logger = colorine.NewLogger(
|
||||
colorine.Prefixes{
|
||||
"git": colorine.Verbose,
|
||||
"hg": colorine.Verbose,
|
||||
"svn": colorine.Verbose,
|
||||
"darcs": colorine.Verbose,
|
||||
"pijul": colorine.Verbose,
|
||||
"bzr": colorine.Verbose,
|
||||
"fossil": colorine.Verbose,
|
||||
"skip": colorine.Verbose,
|
||||
"cd": colorine.Verbose,
|
||||
"resolved": colorine.Verbose,
|
||||
var (
|
||||
NoColor = colorine.TextStyle{Foreground: colorine.None, Background: colorine.None}
|
||||
VerboseColor = colorine.Verbose // white
|
||||
InfoColor = colorine.Info // green
|
||||
NoticeColor = colorine.Notice // blue
|
||||
WarnColor = colorine.Warn // yellow
|
||||
ErrorColor = colorine.Error // red
|
||||
)
|
||||
|
||||
"open": colorine.Warn,
|
||||
"exists": colorine.Warn,
|
||||
"warning": colorine.Warn,
|
||||
var (
|
||||
logger = colorine.NewLogger( // default logger with color
|
||||
colorine.Prefixes{
|
||||
// verbose
|
||||
"git": VerboseColor,
|
||||
"hg": VerboseColor,
|
||||
"svn": VerboseColor,
|
||||
"darcs": VerboseColor,
|
||||
"pijul": VerboseColor,
|
||||
"bzr": VerboseColor,
|
||||
"fossil": VerboseColor,
|
||||
"skip": VerboseColor,
|
||||
"cd": VerboseColor,
|
||||
"resolved": VerboseColor,
|
||||
// notice
|
||||
"authorized": NoticeColor,
|
||||
// warn
|
||||
"open": WarnColor,
|
||||
"exists": WarnColor,
|
||||
"warning": WarnColor,
|
||||
// error
|
||||
"error": ErrorColor,
|
||||
},
|
||||
InfoColor, // default is info
|
||||
)
|
||||
|
||||
"authorized": colorine.Notice,
|
||||
|
||||
"error": colorine.Error,
|
||||
}, colorine.Info)
|
||||
loggerWithoutColor = colorine.NewLogger(
|
||||
colorine.Prefixes{},
|
||||
NoColor,
|
||||
)
|
||||
)
|
||||
|
||||
func init() {
|
||||
SelectLogger()
|
||||
}
|
||||
|
||||
func SelectLogger() {
|
||||
v := os.Getenv("NO_COLOR")
|
||||
|
||||
if strings.ToLower(v) == "true" {
|
||||
logger = loggerWithoutColor
|
||||
}
|
||||
|
||||
SetOutput(os.Stderr)
|
||||
}
|
||||
|
||||
|
|
@ -39,12 +69,12 @@ func SetOutput(w io.Writer) {
|
|||
logger.SetOutput(w)
|
||||
}
|
||||
|
||||
// Log output
|
||||
// Log outputs log
|
||||
func Log(prefix, message string) {
|
||||
logger.Log(prefix, message)
|
||||
}
|
||||
|
||||
// Logf output log with format
|
||||
// Logf outputs log with format
|
||||
func Logf(prefix, msg string, args ...interface{}) {
|
||||
Log(prefix, fmt.Sprintf(msg, args...))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,41 @@
|
|||
package logger
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLog(t *testing.T) {
|
||||
Log("default", "shows this color")
|
||||
Log("error", "shows this color")
|
||||
Log("open", "shows this color")
|
||||
Log("authorized", "shows this color")
|
||||
Log("skip", "shows this color")
|
||||
Log("git", "shows this color")
|
||||
t.Run("with color", func(t *testing.T) {
|
||||
t.Logf("NO_COLOR: %s", os.Getenv("NO_COLOR"))
|
||||
SelectLogger()
|
||||
// info
|
||||
Log("default", "should be green")
|
||||
// verbose
|
||||
Log("git", "should be white")
|
||||
Log("skip", "should be white")
|
||||
// notice
|
||||
Log("authorized", "should be blue")
|
||||
// warn
|
||||
Log("open", "should be yellow")
|
||||
// error
|
||||
Log("error", "should be red")
|
||||
})
|
||||
|
||||
t.Run("without color", func(t *testing.T) {
|
||||
t.Setenv("NO_COLOR", "true")
|
||||
t.Logf("NO_COLOR: %s", os.Getenv("NO_COLOR"))
|
||||
SelectLogger()
|
||||
// info
|
||||
Log("default", "should be none")
|
||||
// verbose
|
||||
Log("git", "should be none")
|
||||
Log("skip", "should be none")
|
||||
// notice
|
||||
Log("authorized", "should be none")
|
||||
// warn
|
||||
Log("open", "should be none")
|
||||
// error
|
||||
Log("error", "should be none")
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue