...
1 package emulator
2
3
4 import (
5 "errors"
6 "fmt"
7
8 "edge-infra.dev/pkg/lib/fog"
9 "edge-infra.dev/pkg/sds/emergencyaccess/apierror"
10 "edge-infra.dev/pkg/sds/lib/colors"
11
12 "github.com/go-logr/logr"
13 )
14
15 func (em Emulator) displayError(log logr.Logger, err error) {
16 log.Error(err, "error with last operation")
17 var apiErr apierror.APIError
18 if ok := errors.As(err, &apiErr); ok {
19 displayAPIErrorMessage(apiErr)
20 displayDetails(apiErr)
21 return
22 }
23 var userErr apierror.UserError
24 if ok := errors.As(err, &userErr); ok {
25 displayDetails(userErr)
26 return
27 }
28
29 fmt.Println(colors.Text("An unknown error occurred, check logs for details.", colors.FgRed))
30 }
31
32 func displayDetails(err apierror.UserError) {
33 if len(err.UserError()) == 0 {
34 return
35 }
36 fmt.Println(colors.Text("Details:", colors.FgRedBold))
37 for _, str := range err.UserError() {
38 fmt.Println(colors.Text("- %s", colors.FgRed, str))
39 }
40 }
41
42 func displayAPIErrorMessage(err apierror.APIError) {
43 fmt.Println(colors.Text("%s", colors.FgRed, err.Message()))
44 }
45
46 func (em Emulator) displaySessionError(err error) {
47 log := fog.FromContext(em.cls.GetSessionContext())
48 em.displayError(log, err)
49 }
50
View as plain text