diff --git a/main.go b/main.go index 38a51c3..1a85275 100644 --- a/main.go +++ b/main.go @@ -1,9 +1,6 @@ package main import ( - "fmt" - "os" - "github.com/host-uk/core/pkg/cli" // Build variants import commands via self-registration. @@ -12,8 +9,5 @@ import ( ) func main() { - if err := cli.Main(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } + cli.Main() } diff --git a/pkg/cli/app.go b/pkg/cli/app.go index 7a2e014..9a3c0a0 100644 --- a/pkg/cli/app.go +++ b/pkg/cli/app.go @@ -17,7 +17,8 @@ const ( // Main initialises and runs the CLI application. // This is the main entry point for the CLI. -func Main() error { +// Exits with code 1 on error. +func Main() { // Initialise CLI runtime with services if err := Init(Options{ AppName: AppName, @@ -29,14 +30,14 @@ func Main() error { })), }, }); err != nil { - return err + Fatal(err) } defer Shutdown() // Add completion command to the CLI's root RootCmd().AddCommand(completionCmd) - return Execute() + Fatal(Execute()) } // completionCmd generates shell completion scripts. diff --git a/pkg/cli/runtime.go b/pkg/cli/runtime.go index cd160e6..6054ef3 100644 --- a/pkg/cli/runtime.go +++ b/pkg/cli/runtime.go @@ -156,6 +156,14 @@ func Error(msg string) { fmt.Println(ErrorStyle.Render(SymbolCross + " " + msg)) } +// Fatal prints an error message and exits with code 1. +func Fatal(err error) { + if err != nil { + Error(err.Error()) + os.Exit(1) + } +} + // Warning prints a warning message. func Warning(msg string) { fmt.Println(WarningStyle.Render(SymbolWarning + " " + msg))