mukan-ignite/ignite/pkg/cliui/clispinner/terminal.go
Mukan Erkin Törük 26b204bd04
Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
feat: fork Ignite CLI v29 as Mukan Ignite — remove cosmos-sdk restrictions
2026-05-11 03:31:37 +03:00

100 lines
1.9 KiB
Go

package clispinner
import (
"io"
"time"
"github.com/briandowns/spinner"
)
var (
terminalCharset = spinner.CharSets[4]
terminalRefreshRate = time.Millisecond * 200
terminalColor = "blue"
)
type TermSpinner struct {
sp *spinner.Spinner
charset []string
}
// newTermSpinner creates a new terminal spinner.
func newTermSpinner(o Options) *TermSpinner {
text := o.text
if text == "" {
text = DefaultText
}
charset := o.charset
if len(charset) == 0 {
charset = terminalCharset
}
spOptions := []spinner.Option{
spinner.WithColor(terminalColor),
spinner.WithSuffix(" " + text),
}
if o.writer != nil {
spOptions = append(spOptions, spinner.WithWriter(o.writer))
}
return &TermSpinner{
sp: spinner.New(charset, terminalRefreshRate, spOptions...),
charset: charset,
}
}
// SetText sets the text for spinner.
func (s *TermSpinner) SetText(text string) Spinner {
s.sp.Lock()
s.sp.Suffix = " " + text
s.sp.Unlock()
return s
}
// SetPrefix sets the prefix for spinner.
func (s *TermSpinner) SetPrefix(text string) Spinner {
s.sp.Lock()
s.sp.Prefix = text + " "
s.sp.Unlock()
return s
}
// SetCharset sets the prefix for spinner.
func (s *TermSpinner) SetCharset(charset []string) Spinner {
s.sp.UpdateCharSet(charset)
return s
}
// SetColor sets the prefix for spinner.
func (s *TermSpinner) SetColor(color string) Spinner {
_ = s.sp.Color(color)
return s
}
// Start starts spinning.
func (s *TermSpinner) Start() Spinner {
s.sp.Start()
return s
}
// Stop stops spinning.
func (s *TermSpinner) Stop() Spinner {
s.sp.Stop()
s.sp.Prefix = ""
_ = s.sp.Color(terminalColor)
s.sp.UpdateCharSet(s.charset)
s.sp.Stop()
return s
}
// IsActive returns whether the spinner is currently active.
func (s *TermSpinner) IsActive() bool {
return s.sp.Active()
}
// Writer returns the spinner writer.
func (s *TermSpinner) Writer() io.Writer {
return s.sp.Writer
}