(define-module (bffe view build) #:use-module (srfi srfi-1) #:use-module (bffe view util) #:export (build)) (define (build title build-details derivation-link-target tag-link-target) (layout #:title (string-append "Build " (assoc-ref build-details "uuid") " — " title) #:body `((main (dl (dt "Derivation") (dd ,(let* ((derivation-name (assoc-ref build-details "derivation-name")) (derivation-link (derivation-link-target derivation-name build-details))) (if derivation-link `(a (@ (href ,derivation-link)) ,derivation-name) derivation-name))) (dt "Tags") (dd (ul ,@(map (lambda (tag) (let* ((key (assoc-ref tag "key")) (value (assoc-ref tag "value")) (link (tag-link-target key value build-details))) (if link `(a (@ (href ,link)) (li ,key ": " ,value)) `(li ,key ": " ,value)))) (vector->list (assoc-ref build-details "tags"))))) (dt "Submitted at") (dd ,(assoc-ref build-details "created-at")) (dt "State") (dd ,(if (assoc-ref build-details "cancelled") "Canceled" (if (assoc-ref build-details "processed") (if (string=? (assoc-ref (assoc-ref build-details "result") "result") "success") "Succeeded" "Failed") "Pending"))) (dt "Priority") (dd ,(assoc-ref build-details "priority"))) ,@(if (assoc-ref build-details "processed") `((a (@ (href ,(string-append "/build/" (assoc-ref build-details "uuid") "/log"))) "View build log")) '())))))