From 1bdc11ba621d354d379083c50cb464dabc5e22c4 Mon Sep 17 00:00:00 2001 From: Apfelwurm Date: Mon, 3 Nov 2025 20:47:19 +0100 Subject: [PATCH] fix no-input app deployment when no tty is present --- cli/app/deploy.go | 1 + cli/app/restart.go | 1 + cli/app/rollback.go | 1 + cli/app/upgrade.go | 1 + pkg/upstream/stack/stack.go | 13 ++++++++++++- 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cli/app/deploy.go b/cli/app/deploy.go index 41d2bad59..a8b7caab3 100644 --- a/cli/app/deploy.go +++ b/cli/app/deploy.go @@ -260,6 +260,7 @@ checkout as-is. Recipe commit hashes are also supported as values for app.Name, app.Server, internal.DontWaitConverge, + internal.NoInput, f, ); err != nil { log.Fatal(err) diff --git a/cli/app/restart.go b/cli/app/restart.go index 49357743d..1d9fbddbb 100644 --- a/cli/app/restart.go +++ b/cli/app/restart.go @@ -128,6 +128,7 @@ Pass "--all-services/-a" to restart all services.`), AppName: app.Name, ServerName: app.Server, Filters: f, + NoInput: internal.NoInput, NoLog: true, Quiet: true, } diff --git a/cli/app/rollback.go b/cli/app/rollback.go index 43ceb3a82..9fd06a0bf 100644 --- a/cli/app/rollback.go +++ b/cli/app/rollback.go @@ -246,6 +246,7 @@ beforehand. See "abra app backup" for more.`), stackName, app.Server, internal.DontWaitConverge, + internal.NoInput, f, ); err != nil { log.Fatal(err) diff --git a/cli/app/upgrade.go b/cli/app/upgrade.go index 0f73352bb..d5e5513a1 100644 --- a/cli/app/upgrade.go +++ b/cli/app/upgrade.go @@ -282,6 +282,7 @@ beforehand. See "abra app backup" for more.`), stackName, app.Server, internal.DontWaitConverge, + internal.NoInput, f, ); err != nil { log.Fatal(err) diff --git a/pkg/upstream/stack/stack.go b/pkg/upstream/stack/stack.go index 129c18d27..2e19c1382 100644 --- a/pkg/upstream/stack/stack.go +++ b/pkg/upstream/stack/stack.go @@ -201,6 +201,7 @@ func RunDeploy( appName string, serverName string, dontWait bool, + noInput bool, filters filters.Args, ) error { log.Info(i18n.G("initialising deployment")) @@ -226,6 +227,7 @@ func RunDeploy( appName, serverName, dontWait, + noInput, filters, ) } @@ -248,6 +250,7 @@ func deployCompose( appName string, serverName string, dontWait bool, + noInput bool, filters filters.Args, ) error { namespace := convert.NewNamespace(opts.Namespace) @@ -311,6 +314,7 @@ func deployCompose( Services: serviceIDs, AppName: appName, ServerName: serverName, + NoInput: noInput, Filters: filters, } @@ -561,6 +565,7 @@ func timestamp() string { type WaitOpts struct { AppName string Filters filters.Args + NoInput bool NoLog bool Quiet bool ServerName string @@ -570,7 +575,13 @@ type WaitOpts struct { func WaitOnServices(ctx context.Context, cl *dockerClient.Client, opts WaitOpts) error { timeout := time.Duration(WaitTimeout) * time.Second model := ui.DeployInitialModel(ctx, cl, opts.Services, opts.AppName, timeout, opts.Filters) - tui := tea.NewProgram(model) + + var tui *tea.Program + if opts.NoInput { + tui = tea.NewProgram(model, tea.WithoutRenderer(), tea.WithInput(nil)) + } else { + tui = tea.NewProgram(model) + } if !opts.Quiet { log.Info(i18n.G("polling deployment status"))