From d804276cf272f8f98ea5c5169f2d79b538e25fec Mon Sep 17 00:00:00 2001 From: decentral1se Date: Tue, 12 Oct 2021 13:25:23 +0200 Subject: [PATCH] feat: add pre-deploy overview --- cli/app/deploy.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/cli/app/deploy.go b/cli/app/deploy.go index f5a400d9..1476c958 100644 --- a/cli/app/deploy.go +++ b/cli/app/deploy.go @@ -2,11 +2,14 @@ package app import ( "fmt" + "strings" + abraFormatter "coopcloud.tech/abra/cli/formatter" "coopcloud.tech/abra/cli/internal" "coopcloud.tech/abra/pkg/client" stack "coopcloud.tech/abra/pkg/client/stack" "coopcloud.tech/abra/pkg/config" + "github.com/AlecAivazis/survey/v2" "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" ) @@ -47,6 +50,10 @@ var appDeployCommand = &cli.Command{ logrus.Fatal(err) } + if err := DeployOverview(app); err != nil { + logrus.Fatal(err) + } + if err := stack.RunDeploy(cl, deployOpts, compose); err != nil { logrus.Fatal(err) } @@ -66,3 +73,32 @@ var appDeployCommand = &cli.Command{ } }, } + +// DeployOverview shows a deployment overview +func DeployOverview(app config.App) error { + tableCol := []string{"server", "compose", "domain", "stack", "version"} + table := abraFormatter.CreateTable(tableCol) + + deployConfig := "compose.yml" + if composeFiles, ok := app.Env["COMPOSE_FILE"]; ok { + deployConfig = strings.Join(strings.Split(composeFiles, ":"), "\n") + } + + table.Append([]string{app.Server, deployConfig, app.Domain, app.StackName(), "unknown"}) + table.Render() + + response := false + prompt := &survey.Confirm{ + Message: "continue with deployment?", + } + + if err := survey.AskOne(prompt, &response); err != nil { + return err + } + + if !response { + logrus.Fatal("exiting as requested") + } + + return nil +} -- 2.47.2