Compare commits

..

1 Commits

Author SHA1 Message Date
98c693b378 feat: Introduces a new help error
All checks were successful
continuous-integration/drone/pr Build is passing
2025-03-13 10:15:02 +01:00
2 changed files with 55 additions and 9 deletions

View File

@ -1,18 +1,64 @@
package internal
import "fmt"
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
help string
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 `, e.err, e.help)
}
func Error(msg, help string) HelpError {
return HelpError{err: msg, help: help}
Help: %s `, msg, e.help)
}

View File

@ -107,7 +107,7 @@ developer machine. The domain is then set to "default".`,
if _, err := client.New(name, timeout); err != nil {
cleanUp(name)
log.Debugf("ssh %s error: %s", name, sshPkg.Fatal(name, err))
return internal.Error(fmt.Sprintf("can't ssh to %s", name), fmt.Sprintf("make sure \"ssh %s\" works", name))
return internal.Errorf("can't ssh to %s", name).Helpf("make sure \"ssh %s\" works", name)
}
if created {