Skip to content

Commit 8964e2e

Browse files
committed
new color scheme and visual improvements
1 parent 3d819cd commit 8964e2e

File tree

7 files changed

+191
-76
lines changed

7 files changed

+191
-76
lines changed

go.mod

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,31 @@ module github.com/jorgefuertes/executor
33
go 1.24
44

55
require (
6+
github.com/charmbracelet/lipgloss v1.1.0
67
github.com/dustin/go-humanize v1.0.1
8+
github.com/muesli/termenv v0.16.0
79
github.com/urfave/cli/v2 v2.27.6
810
)
911

1012
require (
1113
github.com/BurntSushi/toml v1.5.0 // indirect
14+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
15+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
16+
github.com/charmbracelet/x/ansi v0.8.0 // indirect
17+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
18+
github.com/charmbracelet/x/term v0.2.1 // indirect
1219
github.com/daixiang0/gci v0.13.6 // indirect
1320
github.com/davecgh/go-spew v1.1.1 // indirect
1421
github.com/google/go-cmp v0.7.0 // indirect
1522
github.com/hexops/gotextdiff v1.0.3 // indirect
1623
github.com/inconshreveable/mousetrap v1.1.0 // indirect
24+
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
1725
github.com/pmezard/go-difflib v1.0.0 // indirect
1826
github.com/rivo/uniseg v0.4.7 // indirect
1927
github.com/rogpeppe/go-internal v1.14.1 // indirect
2028
github.com/spf13/cobra v1.9.1 // indirect
2129
github.com/spf13/pflag v1.0.6 // indirect
30+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
2231
go.uber.org/multierr v1.11.0 // indirect
2332
go.uber.org/zap v1.27.0 // indirect
2433
golang.org/x/exp/typeparams v0.0.0-20250305212735-054e65f0b394 // indirect
@@ -33,9 +42,7 @@ require (
3342

3443
require (
3544
github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
36-
github.com/fatih/color v1.18.0
3745
github.com/joho/godotenv v1.5.1
38-
github.com/mattn/go-colorable v0.1.14 // indirect
3946
github.com/mattn/go-isatty v0.0.20
4047
github.com/mattn/go-runewidth v0.0.16 // indirect
4148
github.com/olekukonko/tablewriter v0.0.5

go.sum

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
22
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
3+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
4+
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
5+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
6+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
7+
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
8+
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
9+
github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
10+
github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
11+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
12+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
13+
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
14+
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
315
github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0=
416
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
517
github.com/daixiang0/gci v0.13.6 h1:RKuEOSkGpSadkGbvZ6hJ4ddItT3cVZ9Vn9Rybk6xjl8=
@@ -8,8 +20,6 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
820
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
921
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
1022
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
11-
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
12-
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
1323
github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI=
1424
github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow=
1525
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
@@ -27,13 +37,15 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
2737
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
2838
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
2939
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
30-
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
31-
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
40+
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
41+
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
3242
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
3343
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
3444
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
3545
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
3646
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
47+
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
48+
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
3749
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
3850
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
3951
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -53,6 +65,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
5365
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
5466
github.com/urfave/cli/v2 v2.27.6 h1:VdRdS98FNhKZ8/Az8B7MTyGQmpIr36O1EHybx/LaZ4g=
5567
github.com/urfave/cli/v2 v2.27.6/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ=
68+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
69+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
5670
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
5771
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
5872
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -61,6 +75,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
6175
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
6276
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
6377
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
78+
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
79+
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
6480
golang.org/x/exp/typeparams v0.0.0-20250305212735-054e65f0b394 h1:VI4qDpTkfFaCXEPrbojidLgVQhj2x4nzTccG0hjaLlU=
6581
golang.org/x/exp/typeparams v0.0.0-20250305212735-054e65f0b394/go.mod h1:LKZHyeOpPuZcMgxeHjJp4p5yvxrCX1xDvH10zYHhjjQ=
6682
golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=

internal/commands/which.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func Which(cfg *config.Config) error {
5252
terminal.SetNoColor(cfg.NoColor)
5353
desc := "Looking for " + cfg.Command
5454
terminal.Action(terminal.InfoLevel, desc, true)
55-
terminal.DashedLine(len(desc) + 4)
55+
terminal.DashedLine(len(desc)+4, 6)
5656
terminal.Result(ok)
5757

5858
if !ok {

internal/terminal/color.go

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package terminal
2+
3+
import (
4+
"github.com/charmbracelet/lipgloss"
5+
"github.com/muesli/termenv"
6+
)
7+
8+
type theme byte
9+
10+
const (
11+
DarkTheme theme = iota
12+
LightTheme
13+
)
14+
15+
type colorStyle byte
16+
17+
const (
18+
PrimaryColor colorStyle = iota
19+
SecondaryColor
20+
ClockColor
21+
SizeColor
22+
ErrorColor
23+
ErrorLabelColor
24+
WarningColor
25+
WarningLabelColor
26+
SuccessColor
27+
SuccessLabelColor
28+
InfoLevelColor
29+
DebugLevelColor
30+
WarnLevelColor
31+
ErrorLevelColor
32+
TableTitleColor
33+
SpinnerColor
34+
)
35+
36+
var colorMap = map[theme]map[colorStyle]lipgloss.Style{
37+
DarkTheme: {
38+
PrimaryColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#ADB3BF")),
39+
SecondaryColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#5C6370")),
40+
ClockColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#61AFEF")),
41+
SizeColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#E5C07B")),
42+
ErrorColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#E06C75")),
43+
ErrorLabelColor: lipgloss.NewStyle().
44+
Foreground(lipgloss.Color("#FFFFFF")).
45+
Background(lipgloss.Color("#E06C75")),
46+
WarningColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#E5C07B")),
47+
WarningLabelColor: lipgloss.NewStyle().
48+
Foreground(lipgloss.Color("#282C34")).
49+
Background(lipgloss.Color("#E5C07B")),
50+
SuccessColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#98C379")),
51+
SuccessLabelColor: lipgloss.NewStyle().
52+
Foreground(lipgloss.Color("#282C34")).
53+
Background(lipgloss.Color("#98C379")),
54+
InfoLevelColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#56B6C2")),
55+
DebugLevelColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#C678DD")),
56+
WarnLevelColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#D19A66")),
57+
ErrorLevelColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#E06C75")),
58+
TableTitleColor: lipgloss.NewStyle().
59+
Foreground(lipgloss.Color("#282C34")).
60+
Background(lipgloss.Color("#61AFEF")).Bold(true),
61+
SpinnerColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#E5C07B")),
62+
},
63+
LightTheme: {
64+
PrimaryColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#373941")),
65+
SecondaryColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#A0A1A7")),
66+
ClockColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#4078F2")),
67+
SizeColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#C18401")),
68+
ErrorColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#E45649")),
69+
ErrorLabelColor: lipgloss.NewStyle().
70+
Foreground(lipgloss.Color("#FAFAFA")).
71+
Background(lipgloss.Color("#E45649")),
72+
WarningColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#C18401")),
73+
WarningLabelColor: lipgloss.NewStyle().
74+
Foreground(lipgloss.Color("#FAFAFA")).
75+
Background(lipgloss.Color("#C18401")),
76+
SuccessColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#50A14F")),
77+
SuccessLabelColor: lipgloss.NewStyle().
78+
Foreground(lipgloss.Color("#FAFAFA")).
79+
Background(lipgloss.Color("#50A14F")),
80+
InfoLevelColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#0184BC")),
81+
DebugLevelColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#A626A4")),
82+
WarnLevelColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#986801")),
83+
ErrorLevelColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#E45649")),
84+
TableTitleColor: lipgloss.NewStyle().
85+
Foreground(lipgloss.Color("#FAFAFA")).
86+
Background(lipgloss.Color("#4078F2")).Bold(true),
87+
SpinnerColor: lipgloss.NewStyle().Foreground(lipgloss.Color("#C18401")),
88+
},
89+
}
90+
91+
func getColorStyle(cs colorStyle) lipgloss.Style {
92+
theme := DarkTheme
93+
94+
if !lipgloss.HasDarkBackground() {
95+
theme = LightTheme
96+
}
97+
98+
return colorMap[theme][cs]
99+
}
100+
101+
func HasColor() bool {
102+
return !nocolor && termenv.ColorProfile() != termenv.Ascii
103+
}
104+
105+
func SetNoColor(forceNoColor bool) {
106+
nocolor = forceNoColor
107+
}

internal/terminal/print.go

Lines changed: 28 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package terminal
33
import (
44
"fmt"
55
"time"
6-
7-
"github.com/fatih/color"
86
)
97

108
const (
@@ -14,55 +12,50 @@ const (
1412
cursorChar string = "█"
1513
)
1614

17-
var (
18-
White = []color.Attribute{color.FgHiWhite}
19-
Gray = []color.Attribute{color.FgWhite}
20-
Blue = []color.Attribute{color.FgHiBlue}
21-
Green = []color.Attribute{color.FgHiGreen}
22-
DarkGreen = []color.Attribute{color.FgGreen}
23-
Red = []color.Attribute{color.FgHiRed}
24-
Yellow = []color.Attribute{color.FgHiYellow}
25-
Magenta = []color.Attribute{color.FgHiMagenta}
26-
Pink = []color.Attribute{color.FgHiMagenta}
27-
Cyan = []color.Attribute{color.FgCyan}
28-
RedLabel = []color.Attribute{color.BgHiRed, color.FgHiWhite}
29-
GreenLabel = []color.Attribute{color.BgHiGreen, color.FgHiWhite}
30-
CyanLabel = []color.Attribute{color.BgCyan, color.FgHiBlack}
31-
)
32-
33-
func Print(cs []color.Attribute, slow bool, text string) {
34-
color.Set(cs...)
35-
defer color.Unset()
36-
37-
if slow && IsInteractive() {
38-
for _, r := range text {
39-
fmt.Print(cursorChar)
40-
time.Sleep(slowPrintDelay)
41-
fmt.Print("\b" + string(r))
15+
func Print(colorName colorStyle, slow bool, text string) {
16+
if !slow || !IsInteractive() {
17+
if HasColor() {
18+
print(getColorStyle(colorName).Render(text))
19+
} else {
20+
print(text)
4221
}
4322

4423
return
4524
}
4625

47-
fmt.Print(text)
26+
for _, r := range text {
27+
if HasColor() {
28+
print(getColorStyle(colorName).Render(string(cursorChar)))
29+
} else {
30+
print(string(cursorChar))
31+
}
32+
33+
time.Sleep(slowPrintDelay)
34+
print("\b")
35+
if HasColor() {
36+
print(getColorStyle(colorName).Render(string(r)))
37+
} else {
38+
print(string(r))
39+
}
40+
}
4841
}
4942

50-
func PrintF(cs []color.Attribute, slow bool, format string, a ...any) {
43+
func PrintF(colorName colorStyle, slow bool, format string, a ...any) {
5144
text := fmt.Sprintf(format, a...)
52-
Print(cs, slow, text)
45+
Print(colorName, slow, text)
5346
}
5447

5548
func caret(level Level) {
5649
switch level {
5750
case DebugLevel:
58-
Print(Pink, Fast, ">")
51+
Print(DebugLevelColor, Fast, ">")
5952
case InfoLevel:
60-
Print(Green, Fast, ">")
53+
Print(InfoLevelColor, Fast, ">")
6154
case WarnLevel:
62-
Print(Yellow, Fast, ">")
55+
Print(WarnLevelColor, Fast, ">")
6356
case ErrorLevel:
64-
Print(Red, Fast, ">")
57+
Print(ErrorLevelColor, Fast, ">")
6558
}
6659

67-
fmt.Print(" ")
60+
print(" ")
6861
}

internal/terminal/progress.go

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"time"
1111

1212
"github.com/dustin/go-humanize"
13-
"github.com/fatih/color"
1413
)
1514

1615
type Progress struct {
@@ -91,22 +90,17 @@ func (p *Progress) print() {
9190
printedLen := len(p.title) + 4 + len(et)
9291

9392
if p.ctx.Err() == nil {
94-
color.Set(Blue...)
95-
fmt.Print(et)
93+
Print(ClockColor, Fast, et)
9694
printedLen++
9795
if len(bl) > 0 {
9896
printedLen += 1 + len(bl)
99-
color.Set(DarkGreen...)
100-
fmt.Print(bl)
97+
Print(SizeColor, Fast, bl)
10198
}
10299
fmt.Print(" ")
103-
} else {
104-
color.Set(Cyan...)
105-
fmt.Print(et)
106100
}
101+
107102
if p.ctx.Err() == nil {
108-
color.Set(Yellow...)
109-
fmt.Print(p.spinner.chars[p.spin])
103+
Print(SpinnerColor, Fast, p.spinner.chars[p.spin])
110104
printedLen += len(p.spinner.chars[p.spin])
111105

112106
// remaining spinner characters
@@ -117,7 +111,6 @@ func (p *Progress) print() {
117111
}
118112
}
119113

120-
color.Unset()
121114
p.printedLen = printedLen
122115
}
123116

@@ -152,14 +145,15 @@ func (p *Progress) Start() {
152145
}()
153146
}
154147

155-
func (p *Progress) Stop(ok bool) {
148+
func (p *Progress) Stop(result bool) {
156149
p.cancel()
157150
p.print()
158151

159152
if IsInteractive() {
160-
DashedLine(p.printedLen)
153+
DashedLine(p.printedLen, len(p.elapsed())-1)
161154
}
162155

163-
Result(ok)
156+
Print(ClockColor, Fast, p.elapsed())
157+
Result(result)
164158
ShowCursor()
165159
}

0 commit comments

Comments
 (0)