diff --git a/cli/app.go b/cli/app.go index 42f4c0675..411231415 100644 --- a/cli/app.go +++ b/cli/app.go @@ -2,6 +2,7 @@ package cli import ( "context" + "errors" "fmt" "path" "sort" @@ -54,7 +55,7 @@ on your $PATH. Action: func(c *cli.Context) error { appType := c.Args().First() if appType == "" { - cli.ShowSubcommandHelp(c) + errorExit(c, "new", errors.New("no app type provided")) return nil } diff --git a/cli/errors.go b/cli/errors.go new file mode 100644 index 000000000..f4ffbc733 --- /dev/null +++ b/cli/errors.go @@ -0,0 +1,17 @@ +package cli + +import ( + "os" + + "github.com/sirupsen/logrus" + "github.com/urfave/cli/v2" +) + +// errorExit exits the program on error, logs the error to the terminal, and shows the help command. +// When passing command, use an empty string to get the base command, and for a subcommand, give the name of the subcommand +// Example: "" for `app new` gets the app help, "new" gets the `new` subcommand help +func errorExit(c *cli.Context, command string, err interface{}) { + cli.ShowCommandHelp(c, command) + logrus.Error(err) + os.Exit(1) +}