forked from toolshed/abra
.chglog
catalogue
cli
app
formatter
internal
recipe
server
cli.go
version.go
client
cmd
config
secret
tests
web
.drone.yml
.envrc.sample
.gitignore
Makefile
README.md
TODO.md
go.mod
go.sum
version
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)
|
|
}
|
|
}
|