44 lines
654 B
Go
44 lines
654 B
Go
package spinner
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/cheggaaa/pb/v3"
|
|
"github.com/logrusorgru/aurora"
|
|
)
|
|
|
|
var bars map[string]*pb.ProgressBar
|
|
|
|
func init() {
|
|
bars = make(map[string]*pb.ProgressBar)
|
|
}
|
|
|
|
// Start spinner
|
|
func Start(task string) {
|
|
count := 100
|
|
b, ok := bars[task]
|
|
if !ok {
|
|
b = pb.StartNew(count)
|
|
bars[task] = b
|
|
}
|
|
go func() {
|
|
fmt.Printf("Starting %s\n", task)
|
|
for i := 0; i < count; i++ {
|
|
b.Increment()
|
|
time.Sleep(50 * time.Millisecond)
|
|
}
|
|
}()
|
|
}
|
|
|
|
// Stop spinner
|
|
func Stop(task string, err error) {
|
|
b, ok := bars[task]
|
|
if ok {
|
|
b.Finish()
|
|
}
|
|
if err != nil {
|
|
fmt.Printf("%s: %s\n", task, aurora.Red("\u2717"))
|
|
}
|
|
}
|