WIP: further process on app new command

This commit is contained in:
2021-07-30 13:16:28 +02:00
parent 6c36e77722
commit 064a0f271f
5 changed files with 125 additions and 9 deletions

View File

@ -10,6 +10,7 @@ import (
"coopcloud.tech/abra/client"
"coopcloud.tech/abra/config"
"github.com/AlecAivazis/survey/v2"
"github.com/docker/cli/cli/command/formatter"
"github.com/docker/cli/cli/command/idresolver"
"github.com/docker/docker/api/types"
@ -54,23 +55,59 @@ locally in a pass store (see passwordstore.org for more).
config.EnsureAbraDirExists()
appFiles, err := config.LoadAppFiles()
appFiles, err := config.LoadAppFiles(Server)
if err != nil {
logrus.Fatal(err)
}
servers := appFiles.GetServers()
catl, err := catalogue.ReadAppsCatalogue()
if err != nil {
logrus.Fatal(err)
}
// select latest version of recipe from apps_json
// prompt to choose server if not provided
// prompt to choose domain name if not provided
// prompt to choose app name if not provided
app := catl[appType]
var latestVersion string
for tag, _ := range app.Versions {
// apps.json versions are sorted so the last key is latest
latestVersion = tag
}
app.EnsureExists()
if err := app.EnsureVersion(latestVersion); err != nil {
logrus.Fatal(err)
}
servers := appFiles.GetServers()
if Server == "" {
prompt := &survey.Select{
Message: "Select server to create this app for:",
Options: servers,
}
if err := survey.AskOne(prompt, &Server); err != nil {
logrus.Fatal(err)
}
}
if Domain == "" {
prompt := &survey.Input{
Message: "Specify domain for this app:",
}
if err := survey.AskOne(prompt, &Domain); err != nil {
logrus.Fatal(err)
}
}
if AppName == "" {
prompt := &survey.Input{
Message: "Specify app name:",
}
if err := survey.AskOne(prompt, &AppName); err != nil {
logrus.Fatal(err)
}
}
// convert name and truncate or error out if needed
// cp over env.sample and do some sed/replacing
// generate secrets if asked to do so
// save them in a pass store if asked to do so