149 lines
3.6 KiB
Go
149 lines
3.6 KiB
Go
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,
|
|
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)
|
|
}
|
|
}
|