|
|
@ -34,7 +34,6 @@ type Spinner struct { |
|
|
|
msg string |
|
|
|
delay time.Duration |
|
|
|
run bool |
|
|
|
suffix string |
|
|
|
mode []string |
|
|
|
animeIndex int |
|
|
|
length int |
|
|
@ -43,11 +42,6 @@ type Spinner struct { |
|
|
|
exit *sync.Mutex |
|
|
|
} |
|
|
|
|
|
|
|
func (s *Spinner) updateLength() *Spinner { |
|
|
|
s.length = utf8.RuneCountInString(s.suffix) + 2 + utf8.RuneCountInString(s.msg) |
|
|
|
return s |
|
|
|
} |
|
|
|
|
|
|
|
func (s *Spinner) next() string { |
|
|
|
return s.mode[s.animeIndex] |
|
|
|
} |
|
|
@ -60,13 +54,8 @@ func (s *Spinner) SetMsg(msg string) *Spinner { |
|
|
|
s.printFrame(msg, oldLength-length) |
|
|
|
} |
|
|
|
s.msg = msg |
|
|
|
return s.updateLength() |
|
|
|
} |
|
|
|
|
|
|
|
// SetSuffix 设置spinner的后缀
|
|
|
|
func (s *Spinner) SetSuffix(suffix string) *Spinner { |
|
|
|
s.suffix = suffix |
|
|
|
return s.updateLength() |
|
|
|
s.length = utf8.RuneCountInString(s.msg) |
|
|
|
return s |
|
|
|
} |
|
|
|
|
|
|
|
// SetDelay 更新spinner的动画间隔
|
|
|
@ -82,13 +71,13 @@ func New(msg string, mode []string) *Spinner { |
|
|
|
msg: msg, |
|
|
|
delay: DELAY / time.Duration(len(mode)), |
|
|
|
run: false, |
|
|
|
suffix: "", |
|
|
|
mode: mode, |
|
|
|
animeIndex: 0, |
|
|
|
Show: true, |
|
|
|
exit: &sync.Mutex{}, |
|
|
|
} |
|
|
|
return spinner.updateLength() |
|
|
|
spinner.length = utf8.RuneCountInString(spinner.msg) |
|
|
|
return spinner |
|
|
|
} |
|
|
|
|
|
|
|
// Start 启动Spinner动画
|
|
|
@ -156,8 +145,8 @@ func (s *Spinner) frame() *Spinner { |
|
|
|
func (s *Spinner) printFrame(msg string, spaceCount int) { |
|
|
|
fmt.Print( |
|
|
|
str.Join( |
|
|
|
"\r", s.suffix, cyan(s.next()), " ", msg, |
|
|
|
strings.Repeat(" ", spaceCount), |
|
|
|
"\r", cyan(s.next()), " ", msg, |
|
|
|
strings.Repeat(" ", spaceCount+4), |
|
|
|
), |
|
|
|
) |
|
|
|
} |
|
|
@ -199,7 +188,7 @@ func (s *Spinner) Finish(info ...string) { |
|
|
|
} |
|
|
|
fmt.Println( |
|
|
|
str.Join( |
|
|
|
"\r", s.suffix, green(_SUCCESS), " ", s.msg, |
|
|
|
"\r", green(_SUCCESS), " ", s.msg, |
|
|
|
strings.Repeat(" ", gap), |
|
|
|
), |
|
|
|
) |
|
|
@ -221,7 +210,7 @@ func (s *Spinner) Abort(info ...string) { |
|
|
|
} |
|
|
|
fmt.Println( |
|
|
|
str.Join( |
|
|
|
"\r", s.suffix, red(_FAILURE), " ", s.msg, |
|
|
|
"\r", red(_FAILURE), " ", s.msg, |
|
|
|
strings.Repeat(" ", gap), |
|
|
|
), |
|
|
|
) |
|
|
|