Browse Source

progress for resource can be restarted after more Working event comes

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 1 year ago
parent
commit
b3792dd258

+ 0 - 3
internal/desktop/file_shares.go

@@ -139,9 +139,6 @@ func NewFileShareManager(cli *Client, projectName string, hostPaths []string) *F
 // flow can continue.
 // flow can continue.
 func (m *FileShareManager) EnsureExists(ctx context.Context) (err error) {
 func (m *FileShareManager) EnsureExists(ctx context.Context) (err error) {
 	w := progress.ContextWriter(ctx)
 	w := progress.ContextWriter(ctx)
-	// TODO(milas): this should be a per-node option, not global
-	w.HasMore(false)
-
 	w.Event(progress.NewEvent(fileShareProgressID, progress.Working, ""))
 	w.Event(progress.NewEvent(fileShareProgressID, progress.Working, ""))
 	defer func() {
 	defer func() {
 		if err != nil {
 		if err != nil {

+ 2 - 6
pkg/compose/create.go

@@ -68,11 +68,11 @@ type createConfigs struct {
 
 
 func (s *composeService) Create(ctx context.Context, project *types.Project, createOpts api.CreateOptions) error {
 func (s *composeService) Create(ctx context.Context, project *types.Project, createOpts api.CreateOptions) error {
 	return progress.RunWithTitle(ctx, func(ctx context.Context) error {
 	return progress.RunWithTitle(ctx, func(ctx context.Context) error {
-		return s.create(ctx, project, createOpts, false)
+		return s.create(ctx, project, createOpts)
 	}, s.stdinfo(), "Creating")
 	}, s.stdinfo(), "Creating")
 }
 }
 
 
-func (s *composeService) create(ctx context.Context, project *types.Project, options api.CreateOptions, willAttach bool) error {
+func (s *composeService) create(ctx context.Context, project *types.Project, options api.CreateOptions) error {
 	if len(options.Services) == 0 {
 	if len(options.Services) == 0 {
 		options.Services = project.ServiceNames()
 		options.Services = project.ServiceNames()
 	}
 	}
@@ -113,10 +113,6 @@ func (s *composeService) create(ctx context.Context, project *types.Project, opt
 				"--remove-orphans flag to clean it up.", orphans.names())
 				"--remove-orphans flag to clean it up.", orphans.names())
 		}
 		}
 	}
 	}
-
-	if willAttach {
-		progress.ContextWriter(ctx).HasMore(willAttach)
-	}
 	return newConvergence(options.Services, observedState, s).apply(ctx, project, options)
 	return newConvergence(options.Services, observedState, s).apply(ctx, project, options)
 }
 }
 
 

+ 1 - 1
pkg/compose/scale.go

@@ -26,7 +26,7 @@ import (
 
 
 func (s *composeService) Scale(ctx context.Context, project *types.Project, options api.ScaleOptions) error {
 func (s *composeService) Scale(ctx context.Context, project *types.Project, options api.ScaleOptions) error {
 	return progress.Run(ctx, tracing.SpanWrapFunc("project/scale", tracing.ProjectOptions(ctx, project), func(ctx context.Context) error {
 	return progress.Run(ctx, tracing.SpanWrapFunc("project/scale", tracing.ProjectOptions(ctx, project), func(ctx context.Context) error {
-		err := s.create(ctx, project, api.CreateOptions{Services: options.Services}, true)
+		err := s.create(ctx, project, api.CreateOptions{Services: options.Services})
 		if err != nil {
 		if err != nil {
 			return err
 			return err
 		}
 		}

+ 1 - 2
pkg/compose/up.go

@@ -37,8 +37,7 @@ import (
 
 
 func (s *composeService) Up(ctx context.Context, project *types.Project, options api.UpOptions) error { //nolint:gocyclo
 func (s *composeService) Up(ctx context.Context, project *types.Project, options api.UpOptions) error { //nolint:gocyclo
 	err := progress.Run(ctx, tracing.SpanWrapFunc("project/up", tracing.ProjectOptions(ctx, project), func(ctx context.Context) error {
 	err := progress.Run(ctx, tracing.SpanWrapFunc("project/up", tracing.ProjectOptions(ctx, project), func(ctx context.Context) error {
-		w := progress.ContextWriter(ctx)
-		err := s.create(ctx, project, options.Create, options.Start.Attach != nil)
+		err := s.create(ctx, project, options.Create)
 		if err != nil {
 		if err != nil {
 			return err
 			return err
 		}
 		}

+ 1 - 1
pkg/compose/watch.go

@@ -470,7 +470,7 @@ func (s *composeService) handleWatchBatch(ctx context.Context, project *types.Pr
 				Services: []string{serviceName},
 				Services: []string{serviceName},
 				Inherit:  true,
 				Inherit:  true,
 				Recreate: api.RecreateForce,
 				Recreate: api.RecreateForce,
-			}, true)
+			})
 			if err != nil {
 			if err != nil {
 				options.LogTo.Log(api.WatchLogger, fmt.Sprintf("Failed to recreate service after update. Error: %v", err))
 				options.LogTo.Log(api.WatchLogger, fmt.Sprintf("Failed to recreate service after update. Error: %v", err))
 				return err
 				return err

+ 5 - 1
pkg/progress/event.go

@@ -176,6 +176,10 @@ func (e *Event) stop() {
 	e.spinner.Stop()
 	e.spinner.Stop()
 }
 }
 
 
+func (e *Event) hasMore() {
+	e.spinner.Restart()
+}
+
 var (
 var (
 	spinnerDone    = "✔"
 	spinnerDone    = "✔"
 	spinnerWarning = "!"
 	spinnerWarning = "!"
@@ -191,6 +195,6 @@ func (e *Event) Spinner() any {
 	case Error:
 	case Error:
 		return ErrorColor(spinnerError)
 		return ErrorColor(spinnerError)
 	default:
 	default:
-		return e.spinner.String()
+		return CountColor(e.spinner.String())
 	}
 	}
 }
 }

+ 4 - 0
pkg/progress/spinner.go

@@ -64,3 +64,7 @@ func (s *spinner) String() string {
 func (s *spinner) Stop() {
 func (s *spinner) Stop() {
 	s.stop = true
 	s.stop = true
 }
 }
+
+func (s *spinner) Restart() {
+	s.stop = false
+}

+ 2 - 5
pkg/progress/tty.go

@@ -84,14 +84,11 @@ func (w *ttyWriter) event(e Event) {
 		last := w.events[e.ID]
 		last := w.events[e.ID]
 		switch e.Status {
 		switch e.Status {
 		case Done, Error, Warning:
 		case Done, Error, Warning:
-			if last.endTime.IsZero() {
+			if last.Status != e.Status {
 				last.stop()
 				last.stop()
 			}
 			}
 		case Working:
 		case Working:
-			if !last.endTime.IsZero() {
-				// already done, don't overwrite
-				return
-			}
+			last.hasMore()
 		}
 		}
 		last.Status = e.Status
 		last.Status = e.Status
 		last.Text = e.Text
 		last.Text = e.Text

+ 1 - 1
pkg/progress/tty_test.go

@@ -42,7 +42,7 @@ func TestLineText(t *testing.T) {
 	lineWidth := len(fmt.Sprintf("%s %s", ev.ID, ev.Text))
 	lineWidth := len(fmt.Sprintf("%s %s", ev.ID, ev.Text))
 
 
 	out := tty().lineText(ev, "", 50, lineWidth, false)
 	out := tty().lineText(ev, "", 50, lineWidth, false)
-	assert.Equal(t, out, " . id Text Status                            \x1b[34m0.0s \x1b[0m\n")
+	assert.Equal(t, out, " \x1b[33m.\x1b[0m id Text Status                            \x1b[34m0.0s \x1b[0m\n")
 
 
 	ev.Status = Done
 	ev.Status = Done
 	out = tty().lineText(ev, "", 50, lineWidth, false)
 	out = tty().lineText(ev, "", 50, lineWidth, false)