aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage
diff options
context:
space:
mode:
Diffstat (limited to 'guix-qa-frontpage')
-rw-r--r--guix-qa-frontpage/guix-data-service.scm40
-rw-r--r--guix-qa-frontpage/manage-builds.scm9
2 files changed, 45 insertions, 4 deletions
diff --git a/guix-qa-frontpage/guix-data-service.scm b/guix-qa-frontpage/guix-data-service.scm
index 8d3fa80..8004aa4 100644
--- a/guix-qa-frontpage/guix-data-service.scm
+++ b/guix-qa-frontpage/guix-data-service.scm
@@ -21,6 +21,7 @@
guix-data-service-error-url
guix-data-service-error->sexp
+ guix-data-service-error-summary
guix-data-service-request
@@ -92,6 +93,45 @@
(guix-data-service-error-response-body exn)
"query_parameters")))))
+(define (guix-data-service-error-summary exn)
+ (cond
+ ((string=? (or (assoc-ref (guix-data-service-error-response-body exn)
+ "error")
+ "")
+ "invalid query")
+ (string-join
+ (filter-map
+ (match-lambda
+ ((param . val)
+ (and=>
+ (assoc-ref val "invalid_value")
+ (lambda (value)
+ (let ((message
+ (assoc-ref val "message")))
+ (simple-format
+ #f
+ "~A: ~A"
+ param
+ ;; Convert the HTML error messages
+ ;; to something easier to handle
+ (cond
+ ((string-contains message
+ "failed to process revision")
+ 'failed-to-process-revision)
+ ((string-contains message
+ "yet to process revision")
+ 'yet-to-process-revision)
+ ((string=? message "unknown commit")
+ 'unknown-commit)
+ (else
+ 'unknown-error))))))))
+ (assoc-ref
+ (guix-data-service-error-response-body exn)
+ "query_parameters"))
+ ", "))
+ (else
+ (simple-format #f "~A" (guix-data-service-error-response-body exn)))))
+
(define* (guix-data-service-request url #:key (retry-times 0) (retry-delay 5))
(define (make-request)
(let ((port
diff --git a/guix-qa-frontpage/manage-builds.scm b/guix-qa-frontpage/manage-builds.scm
index 38d8c42..e16eb23 100644
--- a/guix-qa-frontpage/manage-builds.scm
+++ b/guix-qa-frontpage/manage-builds.scm
@@ -88,11 +88,12 @@
(lambda (exn)
(simple-format
(current-error-port)
- "failed fetching derivation changes for issue ~A: ~A\n ~A\n"
+ "failed fetching derivation changes for issue ~A: ~A\n"
issue-number
- derivation-changes-url
- exn)
-
+ (if (and (guix-data-service-error? exn)
+ (= (guix-data-service-error-response-code exn) 200))
+ (guix-data-service-error-summary exn)
+ exn))
#f)
(lambda ()
(with-sqlite-cache