mirror of
https://github.com/foomo/squadron.git
synced 2025-10-16 12:35:42 +00:00
Merge pull request #94 from foomo/fix/spinner-play
fix: add spinner play
This commit is contained in:
commit
5866731e84
@ -22,6 +22,9 @@ func NewNoopSpinner(prefix string) *NoopSpinner {
|
||||
|
||||
func (s *NoopSpinner) Start(message ...string) {
|
||||
pterm.Info.Println(s.message(message...))
|
||||
}
|
||||
|
||||
func (s *NoopSpinner) Play() {
|
||||
s.start = time.Now()
|
||||
}
|
||||
|
||||
@ -60,7 +63,7 @@ func (s *NoopSpinner) Write(p []byte) (int, error) {
|
||||
func (s *NoopSpinner) message(message ...string) string {
|
||||
msg := []string{s.prefix}
|
||||
if !s.start.IsZero() && s.stopped {
|
||||
msg[0] += " ⏱ " + time.Since(s.start).Round(0).String()
|
||||
msg[0] += " ⏱ " + time.Since(s.start).Round(2).String()
|
||||
}
|
||||
if value := strings.Join(message, " "); len(value) > 0 {
|
||||
msg = append(msg, value)
|
||||
|
||||
@ -6,6 +6,7 @@ import (
|
||||
|
||||
type Spinner interface {
|
||||
Start(message ...string)
|
||||
Play()
|
||||
Info(message ...string)
|
||||
Warning(message ...string)
|
||||
Fail(message ...string)
|
||||
|
||||
@ -19,8 +19,8 @@ type StandardSpinner struct {
|
||||
func NewStandardSpinner(writer io.Writer, prefix string) *StandardSpinner {
|
||||
return &StandardSpinner{
|
||||
printer: pterm.DefaultSpinner.WithWriter(writer).
|
||||
WithSequence(" ⠋ ", " ⠙ ", " ⠹ ", " ⠸ ", " ⠼ ", " ⠴ ", " ⠦ ", " ⠧ ", " ⠇ ", " ⠏ ").
|
||||
WithDelay(500 * time.Millisecond).
|
||||
WithSequence(" ⏸︎ ").
|
||||
WithDelay(300 * time.Millisecond).
|
||||
WithShowTimer(false),
|
||||
prefix: prefix,
|
||||
}
|
||||
@ -34,6 +34,10 @@ func (s *StandardSpinner) Start(message ...string) {
|
||||
s.start = time.Now()
|
||||
}
|
||||
|
||||
func (s *StandardSpinner) Play() {
|
||||
s.printer.Sequence = []string{" ⠋ ", " ⠙ ", " ⠹ ", " ⠸ ", " ⠼ ", " ⠴ ", " ⠦ ", " ⠧ ", " ⠇ ", " ⠏ "}
|
||||
}
|
||||
|
||||
func (s *StandardSpinner) Info(message ...string) {
|
||||
s.stopped = true
|
||||
s.printer.Info(s.message(message...))
|
||||
@ -62,14 +66,19 @@ func (s *StandardSpinner) Write(p []byte) (int, error) {
|
||||
}
|
||||
}
|
||||
s.log = append(s.log, lines...)
|
||||
// s.printer.UpdateText(s.message())
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
func (s *StandardSpinner) message(message ...string) string {
|
||||
msg := []string{s.prefix}
|
||||
if !s.start.IsZero() && s.stopped {
|
||||
msg[0] += " ⏱ " + time.Since(s.start).Round(0).String()
|
||||
msg[0] += " ⏱ " + time.Since(s.start).Round(time.Second).String()
|
||||
}
|
||||
width := pterm.GetTerminalWidth() - 10
|
||||
for i, line := range msg {
|
||||
if len(line) > width {
|
||||
msg[i] = line[:width] + "…"
|
||||
}
|
||||
}
|
||||
if value := strings.Join(message, " "); len(value) > 0 {
|
||||
msg = append(msg, value)
|
||||
@ -77,11 +86,5 @@ func (s *StandardSpinner) message(message ...string) string {
|
||||
if pterm.PrintDebugMessages {
|
||||
msg = append(msg, s.log...)
|
||||
}
|
||||
m := pterm.GetTerminalWidth() - 10
|
||||
for i, line := range msg {
|
||||
if len(line) > m {
|
||||
msg[i] = line[:m] + "…"
|
||||
}
|
||||
}
|
||||
return strings.Join(msg, "\n ")
|
||||
}
|
||||
|
||||
12
squadron.go
12
squadron.go
@ -256,6 +256,8 @@ func (sq *Squadron) Push(ctx context.Context, pushArgs []string, parallel int) e
|
||||
|
||||
for _, a := range all {
|
||||
wg.Go(func() error {
|
||||
a.spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, a.spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
a.spinner.Warning(err.Error())
|
||||
@ -287,6 +289,7 @@ func (sq *Squadron) BuildDependencies(ctx context.Context, buildArgs []string, p
|
||||
wg.Go(func() error {
|
||||
spinner := printer.NewSpinner(fmt.Sprintf("📦 | %s (%s:%s)", name, build.Image, build.Tag))
|
||||
spinner.Start()
|
||||
spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
@ -345,6 +348,8 @@ func (sq *Squadron) Build(ctx context.Context, buildArgs []string, parallel int)
|
||||
|
||||
for _, a := range all {
|
||||
wg.Go(func() error {
|
||||
a.spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, a.spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
a.spinner.Warning(err.Error())
|
||||
@ -376,6 +381,7 @@ func (sq *Squadron) Down(ctx context.Context, helmArgs []string, parallel int) e
|
||||
wg.Go(func() error {
|
||||
spinner := printer.NewSpinner(fmt.Sprintf("🗑️ | %s/%s", key, k))
|
||||
spinner.Start()
|
||||
spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
@ -457,6 +463,7 @@ func (sq *Squadron) Diff(ctx context.Context, helmArgs []string, parallel int) (
|
||||
wg.Go(func() error {
|
||||
spinner := printer.NewSpinner(fmt.Sprintf("🔍 | %s/%s", key, k))
|
||||
spinner.Start()
|
||||
spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
@ -592,6 +599,7 @@ func (sq *Squadron) Status(ctx context.Context, helmArgs []string, parallel int)
|
||||
wg.Go(func() error {
|
||||
spinner := printer.NewSpinner(fmt.Sprintf("📄 | %s/%s", key, k))
|
||||
spinner.Start()
|
||||
spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
@ -702,6 +710,7 @@ func (sq *Squadron) Rollback(ctx context.Context, revision string, helmArgs []st
|
||||
wg.Go(func() error {
|
||||
spinner := printer.NewSpinner(fmt.Sprintf("♻️ | %s/%s", key, k))
|
||||
spinner.Start()
|
||||
spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
@ -822,6 +831,8 @@ func (sq *Squadron) Up(ctx context.Context, helmArgs []string, username, version
|
||||
|
||||
for _, a := range all {
|
||||
wg.Go(func() error {
|
||||
a.spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, a.spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
a.spinner.Warning(err.Error())
|
||||
@ -905,6 +916,7 @@ func (sq *Squadron) Template(ctx context.Context, helmArgs []string, parallel in
|
||||
wg.Go(func() error {
|
||||
spinner := printer.NewSpinner(fmt.Sprintf("🧾 | %s/%s", key, k))
|
||||
spinner.Start()
|
||||
spinner.Play()
|
||||
|
||||
ctx := ptermx.ContextWithSpinner(ctx, spinner)
|
||||
if err := ctx.Err(); err != nil {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user