forked from toolshed/abra
@ -6,6 +6,7 @@ import (
|
||||
"strings"
|
||||
|
||||
appPkg "coopcloud.tech/abra/pkg/app"
|
||||
"coopcloud.tech/abra/pkg/formatter"
|
||||
"coopcloud.tech/abra/pkg/log"
|
||||
"github.com/AlecAivazis/survey/v2"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
@ -20,7 +21,8 @@ var borderStyle = lipgloss.NewStyle().
|
||||
|
||||
var headerStyle = lipgloss.NewStyle().
|
||||
Underline(true).
|
||||
Bold(true)
|
||||
Bold(true).
|
||||
PaddingBottom(1)
|
||||
|
||||
var leftStyle = lipgloss.NewStyle().
|
||||
Bold(true)
|
||||
@ -51,6 +53,11 @@ func NewVersionOverview(
|
||||
server = "local"
|
||||
}
|
||||
|
||||
domain := app.Domain
|
||||
if domain == "" {
|
||||
domain = "N/A"
|
||||
}
|
||||
|
||||
body := strings.Builder{}
|
||||
body.WriteString(
|
||||
borderStyle.Render(
|
||||
@ -60,7 +67,7 @@ func NewVersionOverview(
|
||||
lipgloss.JoinVertical(
|
||||
lipgloss.Left,
|
||||
horizontal(leftStyle.Render("SERVER"), " ", rightStyle.Render(server)),
|
||||
horizontal(leftStyle.Render("DOMAIN"), " ", rightStyle.Render(app.Domain)),
|
||||
horizontal(leftStyle.Render("DOMAIN"), " ", rightStyle.Render(domain)),
|
||||
horizontal(leftStyle.Render("RECIPE"), " ", rightStyle.Render(app.Recipe.Name)),
|
||||
horizontal(leftStyle.Render("CONFIG"), " ", rightStyle.Render(deployConfig)),
|
||||
horizontal(leftStyle.Render("VERSION"), " ", rightStyle.Render(currentVersion)),
|
||||
@ -101,7 +108,13 @@ func NewVersionOverview(
|
||||
}
|
||||
|
||||
// DeployOverview shows a deployment overview
|
||||
func DeployOverview(app appPkg.App, warnMessages []string, version, chaosVersion string) error {
|
||||
func DeployOverview(
|
||||
app appPkg.App,
|
||||
warnMessages []string,
|
||||
deployedVersion string,
|
||||
deployedChaosVersion string,
|
||||
toDeployVersion,
|
||||
toDeployChaosVersion string) error {
|
||||
deployConfig := "compose.yml"
|
||||
if composeFiles, ok := app.Env["COMPOSE_FILE"]; ok {
|
||||
deployConfig = strings.Join(strings.Split(composeFiles, ":"), "\n")
|
||||
@ -112,25 +125,25 @@ func DeployOverview(app appPkg.App, warnMessages []string, version, chaosVersion
|
||||
server = "local"
|
||||
}
|
||||
|
||||
body := strings.Builder{}
|
||||
body.WriteString(
|
||||
borderStyle.Render(
|
||||
lipgloss.JoinVertical(
|
||||
lipgloss.Center,
|
||||
headerStyle.Render("DEPLOY OVERVIEW"),
|
||||
lipgloss.JoinVertical(
|
||||
lipgloss.Left,
|
||||
horizontal(leftStyle.Render("SERVER"), " ", rightStyle.Render(server)),
|
||||
horizontal(leftStyle.Render("DOMAIN"), " ", rightStyle.Render(app.Domain)),
|
||||
horizontal(leftStyle.Render("RECIPE"), " ", rightStyle.Render(app.Recipe.Name)),
|
||||
horizontal(leftStyle.Render("CONFIG"), " ", rightStyle.Render(deployConfig)),
|
||||
horizontal(leftStyle.Render("VERSION"), " ", rightStyle.Render(version)),
|
||||
horizontal(leftStyle.Render("CHAOS"), " ", rightStyle.Padding(0).Render(chaosVersion)),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
fmt.Println(body.String())
|
||||
domain := app.Domain
|
||||
if domain == "" {
|
||||
domain = "N/A"
|
||||
}
|
||||
|
||||
rows := [][]string{
|
||||
[]string{"APP", domain},
|
||||
[]string{"RECIPE", app.Recipe.Name},
|
||||
[]string{"SERVER", server},
|
||||
[]string{"DEPLOYED", deployedVersion},
|
||||
[]string{"CURRENT CHAOS ", deployedChaosVersion},
|
||||
[]string{"TO DEPLOY", toDeployVersion},
|
||||
[]string{"NEW CHAOS", toDeployChaosVersion},
|
||||
[]string{"CONFIG", deployConfig},
|
||||
}
|
||||
|
||||
overview := formatter.CreateOverview("DEPLOY OVERVIEW", rows)
|
||||
|
||||
fmt.Println(overview)
|
||||
|
||||
for _, msg := range warnMessages {
|
||||
log.Warn(msg)
|
||||
@ -153,6 +166,56 @@ func DeployOverview(app appPkg.App, warnMessages []string, version, chaosVersion
|
||||
return nil
|
||||
}
|
||||
|
||||
// UndeployOverview shows an undeployment overview
|
||||
func UndeployOverview(
|
||||
app appPkg.App,
|
||||
version,
|
||||
chaosVersion string) error {
|
||||
deployConfig := "compose.yml"
|
||||
if composeFiles, ok := app.Env["COMPOSE_FILE"]; ok {
|
||||
deployConfig = strings.Join(strings.Split(composeFiles, ":"), "\n")
|
||||
}
|
||||
|
||||
server := app.Server
|
||||
if app.Server == "default" {
|
||||
server = "local"
|
||||
}
|
||||
|
||||
domain := app.Domain
|
||||
if domain == "" {
|
||||
domain = "N/A"
|
||||
}
|
||||
|
||||
rows := [][]string{
|
||||
[]string{"APP", domain},
|
||||
[]string{"RECIPE", app.Recipe.Name},
|
||||
[]string{"SERVER", server},
|
||||
[]string{"DEPLOYED", version},
|
||||
[]string{"CHAOS", chaosVersion},
|
||||
[]string{"CONFIG", deployConfig},
|
||||
}
|
||||
|
||||
overview := formatter.CreateOverview("UNDEPLOY OVERVIEW", rows)
|
||||
|
||||
fmt.Println(overview)
|
||||
|
||||
if NoInput {
|
||||
return nil
|
||||
}
|
||||
|
||||
response := false
|
||||
prompt := &survey.Confirm{Message: "proceed?"}
|
||||
if err := survey.AskOne(prompt, &response); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !response {
|
||||
log.Fatal("undeploy cancelled")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// PostCmds parses a string of commands and executes them inside of the respective services
|
||||
// the commands string must have the following format:
|
||||
// "<service> <command> <arguments>|<service> <command> <arguments>|... "
|
||||
|
Reference in New Issue
Block a user