|
|
@ -3,6 +3,7 @@ package spinner |
|
|
|
import ( |
|
|
|
"fmt" |
|
|
|
"strings" |
|
|
|
"sync" |
|
|
|
"time" |
|
|
|
|
|
|
|
"github.com/gookit/color" |
|
|
@ -36,6 +37,7 @@ type Spinner struct { |
|
|
|
length int |
|
|
|
msgCh chan string |
|
|
|
Show bool |
|
|
|
exit *sync.Mutex |
|
|
|
} |
|
|
|
|
|
|
|
func (s *Spinner) updateLength() *Spinner { |
|
|
@ -81,6 +83,7 @@ func New(msg string, mode []string) *Spinner { |
|
|
|
mode: mode, |
|
|
|
animeIndex: 0, |
|
|
|
Show: true, |
|
|
|
exit: &sync.Mutex{}, |
|
|
|
} |
|
|
|
return spinner.updateLength() |
|
|
|
} |
|
|
@ -90,6 +93,7 @@ func (s *Spinner) Start() *Spinner { |
|
|
|
if s.run { |
|
|
|
return s |
|
|
|
} |
|
|
|
s.exit.Lock() |
|
|
|
s.msgCh = make( |
|
|
|
chan string, |
|
|
|
5, |
|
|
@ -140,6 +144,7 @@ func (s *Spinner) frame() *Spinner { |
|
|
|
s.printFrame(s.msg, 0) |
|
|
|
} |
|
|
|
} |
|
|
|
s.exit.Unlock() |
|
|
|
return s |
|
|
|
} |
|
|
|
|
|
|
@ -179,6 +184,7 @@ func (s *Spinner) Finish(info ...string) { |
|
|
|
s.msg = s.joinMsg(info...) |
|
|
|
s.run = false |
|
|
|
close(s.msgCh) |
|
|
|
s.exit.Lock() |
|
|
|
fmt.Printf( |
|
|
|
"\r%s%s %s\n", |
|
|
|
s.suffix, |
|
|
@ -195,6 +201,7 @@ func (s *Spinner) Abort(info ...string) { |
|
|
|
s.msg = s.joinMsg(info...) |
|
|
|
s.run = false |
|
|
|
close(s.msgCh) |
|
|
|
s.exit.Lock() |
|
|
|
fmt.Printf( |
|
|
|
"\r%s%s %s\n", |
|
|
|
s.suffix, |
|
|
|