diff --git a/pkg/cmd/codespace/jupyter.go b/pkg/cmd/codespace/jupyter.go index d7fa84cf3..d7544b9a9 100644 --- a/pkg/cmd/codespace/jupyter.go +++ b/pkg/cmd/codespace/jupyter.go @@ -28,20 +28,6 @@ func newJupyterCmd(app *App) *cobra.Command { return jupyterCmd } -func startJupyterServer(a *App, ctx context.Context, session *liveshare.Session) (port int, url string, err error) { - a.StartProgressIndicatorWithLabel("Starting JupyterLab on codespace") - defer a.StopProgressIndicator() - - invoker, err := rpc.CreateInvoker(ctx, session) - if err != nil { - return - } - defer safeClose(session, &err) - - port, url, err = invoker.StartJupyterServer(ctx) - return -} - func (a *App) Jupyter(ctx context.Context, codespaceName string) (err error) { // Ensure all child tasks (e.g. port forwarding) terminate before return. ctx, cancel := context.WithCancel(ctx) @@ -58,7 +44,17 @@ func (a *App) Jupyter(ctx context.Context, codespaceName string) (err error) { } defer safeClose(session, &err) - serverPort, serverUrl, err := startJupyterServer(a, ctx, session) + serverPort, serverUrl := 0, "" + err = a.RunWithProgress("Starting JupyterLab on codespace", func() error { + invoker, err := rpc.CreateInvoker(ctx, session) + if err != nil { + return err + } + defer safeClose(invoker, &err) + + serverPort, serverUrl, err = invoker.StartJupyterServer(ctx) + return err + }) if err != nil { return err } diff --git a/pkg/cmd/codespace/logs.go b/pkg/cmd/codespace/logs.go index df080ef3b..13c59cf72 100644 --- a/pkg/cmd/codespace/logs.go +++ b/pkg/cmd/codespace/logs.go @@ -56,15 +56,17 @@ func (a *App) Logs(ctx context.Context, codespaceName string, follow bool) (err defer listen.Close() localPort := listen.Addr().(*net.TCPAddr).Port - a.StartProgressIndicatorWithLabel("Fetching SSH Details") - invoker, err := rpc.CreateInvoker(ctx, session) - if err != nil { - return err - } - defer safeClose(invoker, &err) + remoteSSHServerPort, sshUser := 0, "" + err = a.RunWithProgress("Fetching SSH Details", func() error { + invoker, err := rpc.CreateInvoker(ctx, session) + if err != nil { + return err + } + defer safeClose(invoker, &err) - remoteSSHServerPort, sshUser, err := invoker.StartSSHServer(ctx) - a.StopProgressIndicator() + remoteSSHServerPort, sshUser, err = invoker.StartSSHServer(ctx) + return err + }) if err != nil { return fmt.Errorf("error getting ssh server details: %w", err) } diff --git a/pkg/cmd/codespace/ssh.go b/pkg/cmd/codespace/ssh.go index 3a3fdc86a..048dfd07b 100644 --- a/pkg/cmd/codespace/ssh.go +++ b/pkg/cmd/codespace/ssh.go @@ -173,15 +173,17 @@ func (a *App) SSH(ctx context.Context, sshArgs []string, opts sshOptions) (err e } defer safeClose(session, &err) - a.StartProgressIndicatorWithLabel("Fetching SSH Details") - invoker, err := rpc.CreateInvoker(ctx, session) - if err != nil { - return err - } - defer safeClose(invoker, &err) + remoteSSHServerPort, sshUser := 0, "" + err = a.RunWithProgress("Fetching SSH Details", func() error { + invoker, err := rpc.CreateInvoker(ctx, session) + if err != nil { + return err + } + defer safeClose(invoker, &err) - remoteSSHServerPort, sshUser, err := invoker.StartSSHServerWithOptions(ctx, startSSHOptions) - a.StopProgressIndicator() + remoteSSHServerPort, sshUser, err = invoker.StartSSHServerWithOptions(ctx, startSSHOptions) + return err + }) if err != nil { return fmt.Errorf("error getting ssh server details: %w", err) }