aboutsummaryrefslogtreecommitdiffhomepage
path: root/main.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-02-23 12:57:59 +0900
committerOphestra <cat@gensokyo.uk>2025-02-23 12:57:59 +0900
commit478b27922cf9084dc63e4084875f36a5427ba734 (patch)
tree5ffac42f38e9e93326cd50ee2fbf3bbc0776ea2e /main.go
parentba1498cd181bf47a2b154aca1bcade804b790b69 (diff)
fortify: handle errors via MustParse
The errSuccess behaviour is kept for beforeExit. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'main.go')
-rw-r--r--main.go32
1 files changed, 8 insertions, 24 deletions
diff --git a/main.go b/main.go
index ce1a4cd2..be32f0b4 100644
--- a/main.go
+++ b/main.go
@@ -53,30 +53,14 @@ func main() {
log.Fatal("this program must not run as root")
}
- err := buildCommand(os.Stderr).Parse(os.Args[1:])
- if errors.Is(err, errSuccess) || errors.Is(err, command.ErrHelp) {
- internal.Exit(0)
- panic("unreachable")
- }
- if errors.Is(err, command.ErrNoMatch) || errors.Is(err, command.ErrEmptyTree) {
- internal.Exit(1)
- panic("unreachable")
- }
- if err == nil {
- log.Fatal("unreachable")
- }
-
- var flagError command.FlagError
- if !errors.As(err, &flagError) {
- log.Printf("command: %v", err)
- internal.Exit(1)
- panic("unreachable")
- }
- fmsg.Verbose(flagError.Error())
- if flagError.Success() {
- internal.Exit(0)
- }
- internal.Exit(1)
+ buildCommand(os.Stderr).MustParse(os.Args[1:], func(err error) {
+ fmsg.Verbosef("command returned %v", err)
+ if errors.Is(err, errSuccess) {
+ fmsg.BeforeExit()
+ os.Exit(0)
+ }
+ })
+ log.Fatal("unreachable")
}
func buildCommand(out io.Writer) command.Command {