abra/cli/cli.go

149 lines
3.6 KiB
Go
Raw Normal View History

package cli
import (
"fmt"
"os"
"coopcloud.tech/abra/cli/app"
"coopcloud.tech/abra/cli/internal"
"coopcloud.tech/abra/cli/recipe"
"coopcloud.tech/abra/cli/server"
"github.com/sirupsen/logrus"
"github.com/urfave/cli/v2"
)
// Verbose stores the variable from VerboseFlag
var Verbose bool
// VerboseFlag turns on/off verbose logging down to the INFO level
var VerboseFlag = &cli.BoolFlag{
Name: "verbose",
Aliases: []string{"V"},
Value: false,
Destination: &Verbose,
Usage: "Show INFO messages",
}
// Debug stores the variable from DebugFlag
var Debug bool
// DebugFlag turns on/off verbose logging down to the DEBUG level
var DebugFlag = &cli.BoolFlag{
Name: "debug",
Aliases: []string{"d"},
Value: false,
Destination: &Debug,
Usage: "Show DEBUG messages",
}
// NoPrompt stores the variable from NoPromptFlag
var NoPrompt bool
// NoPromptFlag turns on/off non-interactive mode where no user input is required
var NoPromptFlag = &cli.BoolFlag{
Name: "no-prompt",
Aliases: []string{"n"},
Value: false,
Destination: &NoPrompt,
Usage: "Don't prompt for input and run non-interactively",
}
// Env stores the variable from EnvFlag
var Env string
// EnvFlag takes a path to an env file to load variables from for the abra cli cmd
var EnvFlag = &cli.PathFlag{
Name: "env",
Aliases: []string{"e"},
Value: "",
Destination: &Env,
Usage: "Environment variables to load",
}
// Branch stores the variable from BranchFlag
var Branch string
// BranchFlag takes the name of the git branch to use in app cloning
var BranchFlag = &cli.StringFlag{
Name: "branch",
Aliases: []string{"b"},
Value: "",
Destination: &Branch,
Usage: "Git branch to use while cloning app repos",
}
// SkipUpdate stores the variable from SkipUpdateFlag
var SkipUpdate bool
// SkipUpdateFlag allows users to skip updating recipe definitions
var SkipUpdateFlag = &cli.BoolFlag{
Name: "skip-update",
Aliases: []string{"U"},
Value: false,
Destination: &SkipUpdate,
Usage: "Don't pull latest app definitions",
}
// SkipCheck stores the variable from SkipCheckFlag
var SkipCheck bool
// SkipCheckFlag allows users to skip checking app vars
var SkipCheckFlag = &cli.BoolFlag{
Name: "skip-check",
Aliases: []string{"C"},
Value: false,
Destination: &SkipCheck,
Usage: "Don't verify app variables",
}
// Stack stores the variable from StackFlag
var Stack string
// StackFlag gets the name of the target stack to run commands against
var StackFlag = &cli.StringFlag{
Name: "stack",
Aliases: []string{"s"},
Value: "",
Destination: &Stack,
Usage: "Name of the target stack",
}
// RunApp runs CLI abra app
func RunApp(version, commit string) {
app := &cli.App{
Name: "abra",
Usage: `The Co-op Cloud command-line utility belt 🎩🐇
____ ____ _ _
/ ___|___ ___ _ __ / ___| | ___ _ _ __| |
| | / _ \ _____ / _ \| '_ \ | | | |/ _ \| | | |/ _' |
| |__| (_) |_____| (_) | |_) | | |___| | (_) | |_| | (_| |
\____\___/ \___/| .__/ \____|_|\___/ \__,_|\__,_|
|_|
`,
Version: fmt.Sprintf("%s-%s", version, commit[:7]),
Commands: []*cli.Command{
app.AppCommand,
server.ServerCommand,
recipe.RecipeCommand,
2021-07-20 21:59:47 +00:00
VersionCommand,
},
Flags: []cli.Flag{
EnvFlag,
StackFlag,
SkipCheckFlag,
SkipUpdateFlag,
VerboseFlag,
BranchFlag,
NoPromptFlag,
DebugFlag,
internal.ContextFlag,
},
}
err := app.Run(os.Args)
if err != nil {
logrus.Fatal(err)
}
}