mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-10 15:46:26 -04:00
Bumps [github.com/sirupsen/logrus](https://github.com/sirupsen/logrus) from 1.9.4 to 1.10.2. - [Release notes](https://github.com/sirupsen/logrus/releases) - [Changelog](https://github.com/sirupsen/logrus/blob/master/CHANGELOG.md) - [Commits](https://github.com/sirupsen/logrus/compare/v1.9.4...v1.10.2) --- updated-dependencies: - dependency-name: github.com/sirupsen/logrus dependency-version: 1.10.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
102 lines
2.1 KiB
Go
102 lines
2.1 KiB
Go
package logrus
|
|
|
|
import (
|
|
"strings"
|
|
"sync"
|
|
)
|
|
|
|
const (
|
|
ansiReset = "\x1b[0m" // reset attributes
|
|
ansiRed = "\x1b[31m" // red
|
|
ansiYellow = "\x1b[33m" // yellow
|
|
ansiCyan = "\x1b[36m" // cyan
|
|
ansiDimCyan = "\x1b[2;36m" // dim cyan
|
|
ansiDimWhite = "\x1b[2;37m" // dim white (light gray)
|
|
)
|
|
|
|
type lvlPrefix struct {
|
|
full string
|
|
truncated string
|
|
padded string
|
|
}
|
|
|
|
func colorize(level Level, s string) string {
|
|
color := ansiCyan
|
|
switch level {
|
|
case TraceLevel:
|
|
color = ansiDimWhite
|
|
case DebugLevel:
|
|
color = ansiDimCyan
|
|
case WarnLevel:
|
|
color = ansiYellow
|
|
case ErrorLevel, FatalLevel, PanicLevel:
|
|
color = ansiRed
|
|
case InfoLevel:
|
|
color = ansiCyan
|
|
}
|
|
return color + s + ansiReset
|
|
}
|
|
|
|
func formatLevel(level Level, disableTrunc, pad bool, maxLen int) string {
|
|
upper := strings.ToUpper(level.String())
|
|
|
|
if pad && maxLen > len(upper) {
|
|
upper += strings.Repeat(" ", maxLen-len(upper))
|
|
}
|
|
|
|
if !pad && !disableTrunc && len(upper) > 4 {
|
|
upper = upper[:4]
|
|
}
|
|
|
|
return colorize(level, upper)
|
|
}
|
|
|
|
var levelPrefixOnce = sync.OnceValues(func() (map[Level]lvlPrefix, lvlPrefix) {
|
|
var maxLevel Level
|
|
maxLen := 0
|
|
for _, lvl := range AllLevels {
|
|
if lvl > maxLevel {
|
|
maxLevel = lvl
|
|
}
|
|
if l := len(lvl.String()); l > maxLen {
|
|
maxLen = l
|
|
}
|
|
}
|
|
|
|
prefix := make(map[Level]lvlPrefix, len(AllLevels))
|
|
for _, lvl := range AllLevels {
|
|
prefix[lvl] = lvlPrefix{
|
|
full: formatLevel(lvl, true, false, maxLen),
|
|
truncated: formatLevel(lvl, false, false, maxLen),
|
|
padded: formatLevel(lvl, true, true, maxLen),
|
|
}
|
|
}
|
|
|
|
unknownLevel := maxLevel + 1
|
|
unknown := lvlPrefix{
|
|
full: formatLevel(unknownLevel, true, false, maxLen),
|
|
truncated: formatLevel(unknownLevel, false, false, maxLen),
|
|
padded: formatLevel(unknownLevel, true, true, maxLen),
|
|
}
|
|
|
|
return prefix, unknown
|
|
})
|
|
|
|
func levelPrefix(level Level, disableTrunc, pad bool) string {
|
|
prefix, unknown := levelPrefixOnce()
|
|
|
|
p, ok := prefix[level]
|
|
if !ok {
|
|
p = unknown
|
|
}
|
|
|
|
switch {
|
|
case pad:
|
|
return p.padded
|
|
case !disableTrunc:
|
|
return p.truncated
|
|
default:
|
|
return p.full
|
|
}
|
|
}
|