abra/cli/app/check.go

82 lines
1.8 KiB
Go
Raw Normal View History

package app
2021-08-28 18:13:56 +00:00
import (
"os"
"path"
"strings"
"coopcloud.tech/abra/cli/internal"
2021-12-11 23:17:39 +00:00
"coopcloud.tech/abra/pkg/autocomplete"
2021-09-05 19:37:03 +00:00
"coopcloud.tech/abra/pkg/config"
2023-09-07 16:50:25 +00:00
"coopcloud.tech/abra/pkg/recipe"
recipePkg "coopcloud.tech/abra/pkg/recipe"
2021-08-28 18:13:56 +00:00
"github.com/sirupsen/logrus"
"github.com/urfave/cli"
2021-08-28 18:13:56 +00:00
)
var appCheckCommand = cli.Command{
2021-08-28 18:13:56 +00:00
Name: "check",
Aliases: []string{"chk"},
2023-09-07 16:50:25 +00:00
Usage: "Check if an app is configured correctly",
2022-01-25 12:48:04 +00:00
ArgsUsage: "<domain>",
Flags: []cli.Flag{
internal.DebugFlag,
internal.ChaosFlag,
internal.OfflineFlag,
},
2023-09-07 16:50:25 +00:00
Before: internal.SubCommandBefore,
BashComplete: autocomplete.AppNameComplete,
2021-08-28 18:13:56 +00:00
Action: func(c *cli.Context) error {
2023-09-07 16:50:25 +00:00
app := internal.ValidateApp(c)
if err := recipe.EnsureExists(app.Recipe); err != nil {
logrus.Fatal(err)
}
2021-08-28 18:13:56 +00:00
if !internal.Chaos {
if err := recipePkg.EnsureIsClean(app.Recipe); err != nil {
logrus.Fatal(err)
}
if !internal.Offline {
if err := recipePkg.EnsureUpToDate(app.Recipe); err != nil {
logrus.Fatal(err)
}
}
if err := recipePkg.EnsureLatest(app.Recipe); err != nil {
logrus.Fatal(err)
}
}
2022-01-25 11:37:13 +00:00
envSamplePath := path.Join(config.RECIPES_DIR, app.Recipe, ".env.sample")
2021-08-28 18:13:56 +00:00
if _, err := os.Stat(envSamplePath); err != nil {
if os.IsNotExist(err) {
2021-12-25 01:03:09 +00:00
logrus.Fatalf("%s does not exist?", envSamplePath)
2021-08-28 18:13:56 +00:00
}
logrus.Fatal(err)
}
envSample, err := config.ReadEnv(envSamplePath)
if err != nil {
logrus.Fatal(err)
}
var missing []string
2021-08-31 15:17:08 +00:00
for k := range envSample {
if _, ok := app.Env[k]; !ok {
2021-08-28 18:13:56 +00:00
missing = append(missing, k)
}
}
if len(missing) > 0 {
2021-08-31 15:47:16 +00:00
missingEnvVars := strings.Join(missing, ", ")
logrus.Fatalf("%s is missing %s", app.Path, missingEnvVars)
2021-08-28 18:13:56 +00:00
}
2021-12-25 01:03:09 +00:00
logrus.Infof("all necessary environment variables defined for %s", app.Name)
2021-08-28 18:13:56 +00:00
return nil
},
}