package main import ( "fmt" "os" "github.com/aykhans/dodo/pkg/config" "github.com/aykhans/dodo/pkg/types" "github.com/aykhans/dodo/pkg/utils" "github.com/jedib0t/go-pretty/v6/text" ) func main() { cliParser := config.NewConfigCLIParser(os.Args) cfg, err := cliParser.Parse() _ = utils.HandleErrorOrDie(err, utils.OnSentinelError(types.ErrCLINoArgs, func(err error) error { cliParser.PrintHelp() utils.PrintErrAndExit(text.FgRed, 1, "\nNo arguments provided.") return nil }), utils.OnCustomError(func(err types.CLIUnexpectedArgsError) error { cliParser.PrintHelp() utils.PrintErrAndExit(text.FgRed, 1, "\nUnexpected CLI arguments provided: %v", err.Args) return nil }), utils.OnCustomError(func(err types.FieldParseErrors) error { cliParser.PrintHelp() fmt.Println() printValidationErrors("CLI", err.Errors...) fmt.Println() os.Exit(1) return nil }), ) fmt.Println(cfg) } func printValidationErrors(parserName string, errors ...types.FieldParseError) { for _, fieldErr := range errors { if fieldErr.Value == "" { utils.PrintErr(text.FgYellow, "[%s] Field '%s': %v", parserName, fieldErr.Field, fieldErr.Err) } utils.PrintErr(text.FgYellow, "[%s] Field '%s' (%s): %v", parserName, fieldErr.Field, fieldErr.Value, fieldErr.Err) } }