refactor: vertical deploy overview

This commit is contained in:
2024-07-10 20:48:08 +02:00
parent d3ede0f0f6
commit f28cffe6d8
5 changed files with 153 additions and 85 deletions

View File

@ -2,6 +2,7 @@ package app
import (
"context"
"fmt"
"coopcloud.tech/abra/cli/internal"
"coopcloud.tech/abra/pkg/autocomplete"
@ -47,6 +48,8 @@ EXAMPLE:
abra app deploy foo.example.com 1e83340e`,
BashComplete: autocomplete.AppNameComplete,
Action: func(c *cli.Context) error {
var warnMessages []string
app := internal.ValidateApp(c)
stackName := app.StackName()
@ -115,7 +118,7 @@ EXAMPLE:
if deployMeta.IsDeployed {
if internal.Force || internal.Chaos {
log.Warnf("%s is already deployed but continuing (--force/--chaos)", app.Name)
warnMessages = append(warnMessages, fmt.Sprintf("%s is already deployed", app.Name))
} else {
log.Fatalf("%s is already deployed", app.Name)
}
@ -139,13 +142,13 @@ EXAMPLE:
log.Fatal(err)
}
version = formatter.SmallSHA(head.String())
log.Warn("no versions detected, using latest commit")
warnMessages = append(warnMessages, fmt.Sprintf("no versions detected, using latest commit"))
}
}
chaosVersion := "false"
if internal.Chaos {
log.Warnf("chaos mode engaged")
warnMessages = append(warnMessages, "chaos mode engaged")
if isChaosCommit {
chaosVersion = specificVersion
@ -201,14 +204,12 @@ EXAMPLE:
for _, envVar := range envVars {
if !envVar.Present {
log.Warnf("env var %s missing from %s.env, present in recipe .env.sample", envVar.Name, app.Domain)
warnMessages = append(warnMessages,
fmt.Sprintf("env var %s missing from %s.env, present in recipe .env.sample", envVar.Name, app.Domain),
)
}
}
if err := internal.DeployOverview(app, version, chaosVersion, "continue with deployment?"); err != nil {
log.Fatal(err)
}
if !internal.NoDomainChecks {
domainName, ok := app.Env["DOMAIN"]
if ok {
@ -216,10 +217,14 @@ EXAMPLE:
log.Fatal(err)
}
} else {
log.Warn("skipping domain checks as no DOMAIN=... configured for app")
warnMessages = append(warnMessages, "skipping domain checks as no DOMAIN=... configured for app")
}
} else {
log.Warn("skipping domain checks as requested")
warnMessages = append(warnMessages, "skipping domain checks as requested")
}
if err := internal.DeployOverview(app, warnMessages, version, chaosVersion); err != nil {
log.Fatal(err)
}
stack.WaitTimeout, err = appPkg.GetTimeoutFromLabel(compose, stackName)