Add error class for config file issues
Fix https://github.com/evcc-io/evcc/issues/14373, replace https://github.com/evcc-io/evcc/pull/14375
TODO:
- [ ] No auth prompt if fatal error (yaml or db init) @naltatis
@naltatis ich glaube das funktioniert noch nicht wie gewünscht weil der YAML Error jetzt eine ganz andere Struktur bekommt und damit die line/column Information verliert. Mir ist noch nichts Schlaues eingefallen.
Workaround: wir drehen das Thema Config File zurück (nicht aber DB) und Du überlegst Dir eine andere Erkennung für diesen Fehlertyp?
Workaround: wir drehen das Thema Config File zurück (nicht aber DB) und Du überlegst Dir eine andere Erkennung für diesen Fehlertyp?
Hm, dann würde ich ja nicht mehr rausbekommen, ob die DB gefunden/initialiisiert wurde oder nicht. Oder übersehe ich was?
Ja, wie gehabt: wenn yaml error (ob mit Class oder ohne) dann keine DB. Ebenso wenn DB Class error.
Oder: wir machen das Wrapping fürs Config file anders, analog:
func jsonError(w http.ResponseWriter, status int, err error) {
w.WriteHeader(status)
res := struct {
Error string `json:"error"`
Line int `json:"line,omitempty"`
}{
Error: err.Error(),
}
var (
ype *yaml.ParserError
yue yaml.UnmarshalError
)
switch {
case errors.As(err, &ype):
res.Line = ype.Line
case errors.As(err, &yue):
res.Line = yue.Line
}
jsonWrite(w, res)
}
Das bringt mich auf folgende Frage: was würdest Du erwarten, wenn es bei UI Config bei einem Gerät zu einem YAML Error käme beim Start? Auch dort würden wir aktuell die strukturierte Zeileninformation verschlucken.
@naltatis nochmal angehübscht falls etwas Unvorhergesehenes passiert. Kann rein?
Hier fehlt noch der Gegenpart im UI. Kümmer ich mich drum ...
UI kann nun mit den Fehlerzuständen sauber umgehen. Kann rein ...