anitoru/err/err.go
2024-08-05 18:48:28 -04:00

69 lines
983 B
Go

package err
import (
"fmt"
"log"
"os"
)
type LogOption func(string)
type ErrorCallback struct {
Error error
}
func If(err error) *ErrorCallback {
return &ErrorCallback{err}
}
func (err *ErrorCallback) ThenIf(f func() error) *ErrorCallback {
if err.Error == nil {
err.Error = f()
}
return err
}
func (err *ErrorCallback) Then(f func()) *ErrorCallback {
if err.Error == nil {
f()
}
return err
}
func (err *ErrorCallback) End() error {
return err.Error
}
func Panic(err error) bool {
if err != nil {
log.Panic(err)
return true
}
return false
}
func LogIf(err error, opts ...LogOption) bool {
if err != nil {
for _, opt := range opts {
opt(err.Error())
}
log.Println(err.Error())
return true
}
return false
}
func Log(msg string, opts ...LogOption) {
for _, opt := range opts {
opt(msg)
}
log.Println(msg)
}
func ExitIf(err error, msg string) {
if err != nil {
fmt.Fprintln(os.Stderr, msg, "Error:", err.Error())
os.Exit(1)
}
}