go get github.com/codemodus/relay Package relay provides a simple mechanism for relaying control flow based upon whether a checked error is nil or not.
funcCodedFns(handler...func(error)) (CodedCheckFunc, CodedTripFunc) funcDefaultHandler() func(error) funcFns(handler...func(error)) (CheckFunc, TripFunc) funcHandle() typeCheckFunctypeCodedCheckFunctypeCodedErrorfunc (ce*CodedError) Error() stringfunc (ce*CodedError) ExitCode() inttypeCodedTripFuncfuncCodedTripFn(ckCodedCheckFunc) CodedTripFunctypeExitCodertypeRelayfuncNew(handler...func(error)) *Relayfunc (r*Relay) Check(errerror) func (r*Relay) CodedCheck(codeint, errerror) typeTripFuncfuncTripFn(ckCheckFunc) TripFuncimport ( "github.com/codemodus/relay" ) funcmain(){r:=relay.New() deferrelay.Handle() err:=fail() r.Check(err) // prints "{cmd_name}:{err_msg}" to stderr// calls os.Exit with code set as 1 }h:=func(errerror){fmt.Println(err) fmt.Println("extra message") } r:=relay.New(h) deferrelay.Handle() err:=fail() r.Check(err) fmt.Println("should not print") // Output:// always fails// extra messageck:=relay.New().Checkdeferrelay.Handle() err:=fail() ck(err) // prints "{cmd_name}:{err_msg}" to stderr// calls os.Exit with code set as 1ck:=relay.New().CodedCheckdeferrelay.Handle() err:=fail() ck(3, err) // prints "{cmd_name}:{err_msg}" to stderr// calls os.Exit with code set as first arg to r.CodedCheck ("ck")ck:=relay.New().Checktrip:=relay.TripFn(ck) deferrelay.Handle() n:=three() ifn!=2{trip("must receive %v: %v is invalid", 2, n) } fmt.Println("should not print") // prints "{cmd_name}:{trip_msg}" to stderr// calls os.Exit with code set as 1ck, trip:=relay.Fns() deferrelay.Handle() err:=mightFail() ck(err) n:=three() ifn!=2{trip("must receive %v: %v is invalid", 2, n) } fmt.Println("should not print") // prints "{cmd_name}:{trip_msg}" to stderr// calls os.Exit with code set as 1View the GoDoc
N/A