package cmd import ( "fmt" "os" "time" "github.com/schollz/progressbar/v3" ) type Spinner struct { description string *progressbar.ProgressBar } func NewSpinner(description string) *Spinner { return &Spinner{ description: description, ProgressBar: progressbar.NewOptions(-1, progressbar.OptionSetWriter(os.Stderr), progressbar.OptionThrottle(60*time.Millisecond), progressbar.OptionSpinnerType(14), progressbar.OptionSetRenderBlankState(true), progressbar.OptionSetElapsedTime(false), progressbar.OptionClearOnFinish(), progressbar.OptionSetDescription(description), ), } } func (s *Spinner) Spin(tick time.Duration) { for range time.Tick(tick) { if s.IsFinished() { break } s.Add(1) } } func (s *Spinner) Stop() { s.Finish() fmt.Println(s.description) }