From 9a73ac62b7dc7b7a4a7e12f6ae6af9fe2eca15b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Salo=C5=88?= Date: Fri, 4 Sep 2026 20:08:27 +0200 Subject: [PATCH] Add no-wait flag to push and deploy commands --- .golangci.yaml | 3 +++ CHANGELOG.md | 10 ++++++++++ src/cmd/serviceDeploy.go | 20 ++++++++++++-------- src/cmd/servicePush.go | 8 ++++++++ 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 7b832d0d..e8d62462 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -80,6 +80,9 @@ linters: - (io.Closer).Close - (*os.File).Close - os.Remove + maintidx: + # A high index indicates better maintainability (it's kind of the opposite of complexity). + under: 15 # Default: 20 exclusions: rules: # QF1008 "could remove embedded field from selector" is cosmetic. diff --git a/CHANGELOG.md b/CHANGELOG.md index 319ff18f..8630ed31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v1.1.2] - 2026-09-04 + +### Added +- `--no-wait` flag to `service push` and `service deploy` commands, which will cause the command to end once a process on Zerops is created, instead of waiting for it to fully complete + +## [v1.1.1] - 2026-09-04 + +### Changed +- removed any use of deprecated elastic search endpoints and replaced with standard REST API + ## [v1.1.0] - 2026-05-26 ### Added diff --git a/src/cmd/serviceDeploy.go b/src/cmd/serviceDeploy.go index 880754a8..8485f6f7 100644 --- a/src/cmd/serviceDeploy.go +++ b/src/cmd/serviceDeploy.go @@ -41,6 +41,7 @@ func serviceDeployCmd() *cmdBuilder.Cmd { StringSliceFlag("path-to-file-or-dir", []string{"."}, "path to file or directory to be deployed. Can be repeated."). BoolFlag("verbose", false, i18n.T(i18n.VerboseFlag), cmdBuilder.ShortHand("v")). BoolFlag("deploy-git-folder", false, i18n.T(i18n.UploadGitFolder), cmdBuilder.ShortHand("g")). + BoolFlag("no-wait", false, "Do not wait for the Zerops deploy process to finish."). HelpFlag(i18n.T(i18n.CmdHelpServiceDeploy)). LoggedUserRunFunc(func(ctx context.Context, cmdData *cmdBuilder.LoggedUserCmdData) error { uxBlocks := cmdData.UxBlocks @@ -154,12 +155,10 @@ func serviceDeployCmd() *cmdBuilder.Cmd { } wg := sync.WaitGroup{} - wg.Add(1) - go func() { - defer wg.Done() + wg.Go(func() { err := arch.TarFiles(writer, files) writer.CloseWithError(err) - }() + }) if err := packageStream(ctx, appVersion.UploadUrl, finalReader); err != nil { // if an error occurred while packing the app, return that error @@ -207,7 +206,14 @@ func serviceDeployCmd() *cmdBuilder.Cmd { return err } - err = uxHelpers.ProcessCheckWithSpinner( + if cmdData.Params.GetBool("no-wait") { + if deployProcess.Status.IsPending() || deployProcess.Status.IsRunning() { + cmdData.UxBlocks.PrintSuccessText(i18n.T(i18n.DeployRunning)) + } + return nil + } + + if err := uxHelpers.ProcessCheckWithSpinner( ctx, cmdData.UxBlocks, []uxHelpers.Process{{ @@ -216,9 +222,7 @@ func serviceDeployCmd() *cmdBuilder.Cmd { ErrorMessageMessage: i18n.T(i18n.DeployFailed), SuccessMessage: i18n.T(i18n.DeployFinished), }}, - ) - - if err != nil { + ); err != nil { return err } diff --git a/src/cmd/servicePush.go b/src/cmd/servicePush.go index 0ecfb518..12b69851 100644 --- a/src/cmd/servicePush.go +++ b/src/cmd/servicePush.go @@ -48,6 +48,7 @@ func servicePushCmd() *cmdBuilder.Cmd { StringFlag("workspace-state", archiveClient.WorkspaceAll, i18n.T(i18n.PushWorkspaceState), cmdBuilder.ShortHand("w")). BoolFlag("no-git", false, i18n.T(i18n.NoGit)). BoolFlag("disable-logs", false, "disable logs"). + BoolFlag("no-wait", false, "Do not wait for the Zerops deploy process to finish."). HelpFlag(i18n.T(i18n.CmdHelpPush)). LoggedUserRunFunc(func(ctx context.Context, cmdData *cmdBuilder.LoggedUserCmdData) error { uxBlocks := cmdData.UxBlocks @@ -213,6 +214,13 @@ func servicePushCmd() *cmdBuilder.Cmd { return err } + if cmdData.Params.GetBool("no-wait") { + if deployProcess.Status.IsPending() || deployProcess.Status.IsRunning() { + cmdData.UxBlocks.PrintSuccessText(i18n.T(i18n.PushRunning)) + } + return nil + } + guiHost := cmdData.CliStorage.Data().RegionData.GuiAddress.OrDefault("app.zerops.io") var buildPhase bool