// Package cli provides the interface for the command-line. 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, }, } if err := app.Run(os.Args); err != nil { logrus.Fatal(err) } }