cmd: spinner progress for transfer model data (#6100)

This commit is contained in:
Josh 2024-08-12 11:46:32 -07:00 committed by GitHub
parent 980dd15f81
commit f7e3b9190f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 52 additions and 7 deletions

View file

@ -3,11 +3,12 @@ package progress
import (
"fmt"
"strings"
"sync/atomic"
"time"
)
type Spinner struct {
message string
message atomic.Value
messageWidth int
parts []string
@ -21,20 +22,25 @@ type Spinner struct {
func NewSpinner(message string) *Spinner {
s := &Spinner{
message: message,
parts: []string{
"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏",
},
started: time.Now(),
}
s.SetMessage(message)
go s.start()
return s
}
func (s *Spinner) SetMessage(message string) {
s.message.Store(message)
}
func (s *Spinner) String() string {
var sb strings.Builder
if len(s.message) > 0 {
message := strings.TrimSpace(s.message)
if message, ok := s.message.Load().(string); ok && len(message) > 0 {
message := strings.TrimSpace(message)
if s.messageWidth > 0 && len(message) > s.messageWidth {
message = message[:s.messageWidth]
}