feat: Introduces a new help error
All checks were successful
continuous-integration/drone/pr Build is passing
All checks were successful
continuous-integration/drone/pr Build is passing
This commit is contained in:
64
cli/internal/error.go
Normal file
64
cli/internal/error.go
Normal file
@ -0,0 +1,64 @@
|
||||
package internal
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
|
||||
"github.com/charmbracelet/log"
|
||||
)
|
||||
|
||||
func Error(msg string) HelpError {
|
||||
caller := ""
|
||||
if Debug {
|
||||
_, file, line, _ := runtime.Caller(1)
|
||||
caller = log.ShortCallerFormatter(file, line, "")
|
||||
|
||||
}
|
||||
return HelpError{err: msg, caller: caller}
|
||||
}
|
||||
|
||||
func Errorf(format string, a ...any) HelpError {
|
||||
caller := ""
|
||||
if Debug {
|
||||
_, file, line, _ := runtime.Caller(1)
|
||||
caller = log.ShortCallerFormatter(file, line, "")
|
||||
|
||||
}
|
||||
return HelpError{err: fmt.Sprintf(format, a...), caller: caller}
|
||||
}
|
||||
|
||||
type HelpError struct {
|
||||
err string
|
||||
caller string
|
||||
help string
|
||||
}
|
||||
|
||||
func (e HelpError) Help(help string) HelpError {
|
||||
e.help = help
|
||||
return e
|
||||
}
|
||||
|
||||
func (e HelpError) Helpf(format string, a ...any) HelpError {
|
||||
e.help = fmt.Sprintf(format, a...)
|
||||
return e
|
||||
}
|
||||
|
||||
func (e HelpError) Error() string {
|
||||
return e.format()
|
||||
}
|
||||
|
||||
func (e HelpError) format() string {
|
||||
msg := ""
|
||||
if e.caller != "" {
|
||||
msg += fmt.Sprintf("<%s> ", e.caller)
|
||||
}
|
||||
|
||||
msg += e.err
|
||||
if e.help == "" {
|
||||
return msg
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`%s
|
||||
|
||||
Help: %s `, msg, e.help)
|
||||
}
|
Reference in New Issue
Block a user