forked from toolshed/abra
WIP: further process on app new command
This commit is contained in:
51
cli/app.go
51
cli/app.go
@ -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
|
||||
|
Reference in New Issue
Block a user