diff options
| author | Ophestra Umiker <cat@ophivana.moe> | 2024-10-12 02:11:43 +0900 |
|---|---|---|
| committer | Ophestra Umiker <cat@ophivana.moe> | 2024-10-12 02:11:43 +0900 |
| commit | d5c26ae59339695623a64afdaeb07dee7161a9fd (patch) | |
| tree | d11b6c9349eea7a161b9bc098f78235dd9d9cb72 /main.go | |
| parent | 61b473a06fb12b9f3d6f9d7f07693313bd954509 (diff) | |
fortify: move error handling to separate file
Error handling here is way too monstrous due to terrible design of the internal/app package. Since rewriting internal/app will take a while, error handling is moved out of main to improve readability.
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 54 |
1 files changed, 3 insertions, 51 deletions
@@ -1,7 +1,6 @@ package main import ( - "errors" "flag" "fmt" "os" @@ -48,60 +47,13 @@ func main() { } else if err = a.Start(); err != nil { logBaseError(err, "fortify: cannot start app:") } else if r, err = a.Wait(); err != nil { - r = 1 - - var e *app.BaseError - if !app.AsBaseError(err, &e) { - fmt.Println("fortify: wait failed:", err) - } else { - // Wait only returns either *app.ProcessError or *app.StateStoreError wrapped in a *app.BaseError - var se *app.StateStoreError - if !errors.As(err, &se) { - // does not need special handling - fmt.Print("fortify: " + e.Message()) - } else { - // inner error are either unwrapped store errors - // or joined errors returned by *appSealTx revert - // wrapped in *app.BaseError - var ej app.RevertCompoundError - if !errors.As(se.InnerErr, &ej) { - // does not require special handling - fmt.Print("fortify: " + e.Message()) - } else { - errs := ej.Unwrap() - - // every error here is wrapped in *app.BaseError - for _, ei := range errs { - var eb *app.BaseError - if !errors.As(ei, &eb) { - // unreachable - fmt.Println("fortify: invalid error type returned by revert:", ei) - } else { - // print inner *app.BaseError message - fmt.Print("fortify: " + eb.Message()) - } - } - } - } + if r < 1 { + r = 1 } + logWaitError(err) } if err := a.WaitErr(); err != nil { fmt.Println("fortify: inner wait failed:", err) } os.Exit(r) } - -func logBaseError(err error, message string) { - var e *app.BaseError - - if app.AsBaseError(err, &e) { - fmt.Print("fortify: " + e.Message()) - } else { - fmt.Println(message, err) - } -} - -func fatalf(format string, a ...any) { - fmt.Printf("fortify: "+format, a...) - os.Exit(1) -} |
