command: filter parse errors
All checks were successful
Test / Create distribution (push) Successful in 25s
Test / Run NixOS test (push) Successful in 3m29s

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2025-02-23 12:55:10 +09:00
parent eda4d612c2
commit ba1498cd18
2 changed files with 30 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package command
import (
"errors"
"log"
"os"
)
var (
@@ -78,3 +79,27 @@ func (n *node) printf(format string, a ...any) {
n.logf(format, a...)
}
}
func (n *node) MustParse(arguments []string, handleError func(error)) {
switch err := n.Parse(arguments); err {
case nil:
return
case ErrHelp:
os.Exit(0)
case ErrNoMatch:
os.Exit(1)
case ErrEmptyTree:
os.Exit(1)
default:
var flagError FlagError
if !errors.As(err, &flagError) { // returned by HandlerFunc
handleError(err)
os.Exit(1)
}
if flagError.Success() {
os.Exit(0)
}
os.Exit(1)
}
}