From acca710a5a90278b35a936185da9e667ede0661d Mon Sep 17 00:00:00 2001 From: decentral1se Date: Sun, 29 Aug 2021 10:45:49 +0200 Subject: [PATCH] feat: add app config command --- TODO.md | 2 +- cli/app/config.go | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index 8e6869df..5c684600 100644 --- a/TODO.md +++ b/TODO.md @@ -18,7 +18,7 @@ - [ ] `deploy` (WIP: decentral1se) - [x] `check` - [x] `version` - - [ ] `config` (WIP: decentral1se) + - [x] `config` - [ ] `cp` - [ ] `logs` - [x] `ps` diff --git a/cli/app/config.go b/cli/app/config.go index eae01cef..91303a46 100644 --- a/cli/app/config.go +++ b/cli/app/config.go @@ -1,7 +1,50 @@ package app -import "github.com/urfave/cli/v2" +import ( + "errors" + "os" + "os/exec" + + "coopcloud.tech/abra/cli/internal" + "coopcloud.tech/abra/config" + "github.com/AlecAivazis/survey/v2" + "github.com/sirupsen/logrus" + "github.com/urfave/cli/v2" +) var appConfigCommand = &cli.Command{ - Name: "config", + Name: "config", + Usage: "edit app environment config", + Action: func(c *cli.Context) error { + appName := c.Args().First() + if appName == "" { + internal.ShowSubcommandHelpAndError(c, errors.New("no app name provided")) + } + + ed, ok := os.LookupEnv("EDITOR") + if !ok { + edPrompt := &survey.Select{ + Message: "Which editor do you wish to use?", + Options: []string{"vi", "vim", "nvim", "nano", "pico", "emacs"}, + } + if err := survey.AskOne(edPrompt, &ed); err != nil { + logrus.Fatal(err) + } + } + + appFiles, err := config.LoadAppFiles("") + if err != nil { + logrus.Fatal(err) + } + + cmd := exec.Command(ed, appFiles[appName].Path) + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + logrus.Fatal(err) + } + + return nil + }, }