mirror of
https://github.com/aykhans/dodo.git
synced 2025-09-01 00:53:34 +00:00
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|