| 146 | } |
| 147 | |
| 148 | func convertError(rerr error) *dagger.Error { |
| 149 | if gqlErr := findSingleGQLError(rerr); gqlErr != nil { |
| 150 | dagErr := dag.Error(gqlErr.Message) |
| 151 | if gqlErr.Extensions != nil { |
| 152 | keys := make([]string, 0, len(gqlErr.Extensions)) |
| 153 | for k := range gqlErr.Extensions { |
| 154 | keys = append(keys, k) |
| 155 | } |
| 156 | sort.Strings(keys) |
| 157 | for _, k := range keys { |
| 158 | val, err := json.Marshal(gqlErr.Extensions[k]) |
| 159 | if err != nil { |
| 160 | fmt.Println("failed to marshal error value:", err) |
| 161 | } |
| 162 | dagErr = dagErr.WithValue(k, dagger.JSON(val)) |
| 163 | } |
| 164 | } |
| 165 | return dagErr |
| 166 | } |
| 167 | return dag.Error(rerr.Error()) |
| 168 | } |
| 169 | |
| 170 | func findSingleGQLError(rerr error) *gqlerror.Error { |
| 171 | switch x := rerr.(type) { |