mirror of
https://github.com/aykhans/dodo.git
synced 2025-09-03 18:03:34 +00:00
Add -f/--config-file flag for loading YAML configs from local or remote sources. Fix error handling to return unmatched errors.
46 lines
1.1 KiB
Go
46 lines
1.1 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 {
|
|
utils.PrintErr(text.FgRed, "[%s] Field '%s': %v", parserName, fieldErr.Field, fieldErr.Err)
|
|
}
|
|
}
|