| 102 | } |
| 103 | |
| 104 | func convertError(rerr error) *dagger.Error { |
| 105 | if gqlErr := findSingleGQLError(rerr); gqlErr != nil { |
| 106 | dagErr := dag.Error(gqlErr.Message) |
| 107 | if gqlErr.Extensions != nil { |
| 108 | keys := make([]string, 0, len(gqlErr.Extensions)) |
| 109 | for k := range gqlErr.Extensions { |
| 110 | keys = append(keys, k) |
| 111 | } |
| 112 | sort.Strings(keys) |
| 113 | for _, k := range keys { |
| 114 | val, err := json.Marshal(gqlErr.Extensions[k]) |
| 115 | if err != nil { |
| 116 | fmt.Println("failed to marshal error value:", err) |
| 117 | } |
| 118 | dagErr = dagErr.WithValue(k, dagger.JSON(val)) |
| 119 | } |
| 120 | } |
| 121 | return dagErr |
| 122 | } |
| 123 | return dag.Error(rerr.Error()) |
| 124 | } |
| 125 | |
| 126 | func findSingleGQLError(rerr error) *gqlerror.Error { |
| 127 | switch x := rerr.(type) { |