~ruther/guix-local

4ee79f22f5379b201eabca94c3ab34bb00a8a8b0 — Ludovic Courtès 8 years ago 5c46c85
ui: 'package->recutils' takes #:extra-fields.

* guix/ui.scm (package->recutils): Add #:extra-fields and honor it.
1 files changed, 16 insertions(+), 6 deletions(-)

M guix/ui.scm
M guix/ui.scm => guix/ui.scm +16 -6
@@ 946,9 946,10 @@ followed by \"+ \", which makes for a valid multi-line field value in the
                      '()
                      str)))

(define* (package->recutils p port #:optional (width (%text-width)))
(define* (package->recutils p port #:optional (width (%text-width))
                            #:key (extra-fields '()))
  "Write to PORT a `recutils' record of package P, arranging to fit within
WIDTH columns."
WIDTH columns.  EXTRA-FIELDS is a list of symbol/value pairs to emit."
  (define width*
    ;; The available number of columns once we've taken into account space for
    ;; the initial "+ " prefix.


@@ 993,11 994,11 @@ WIDTH columns."
             (G_ "unknown"))))
  (format port "synopsis: ~a~%"
          (string-map (match-lambda
                       (#\newline #\space)
                       (chr       chr))
                        (#\newline #\space)
                        (chr       chr))
                      (or (and=> (package-synopsis-string p) P_)
                          "")))
  (format port "~a~2%"
  (format port "~a~%"
          (string->recutils
           (string-trim-right
            (parameterize ((%text-width width*))


@@ 1005,7 1006,16 @@ WIDTH columns."
               (string-append "description: "
                              (or (and=> (package-description p) P_)
                                  ""))))
            #\newline))))
            #\newline)))
  (for-each (match-lambda
              ((field . value)
               (let ((field (symbol->string field)))
                 (format port "~a: ~a~%"
                         field
                         (fill-paragraph (object->string value) width*
                                         (string-length field))))))
            extra-fields)
  (newline port))

(define (string->generations str)
  "Return the list of generations matching a pattern in STR.  This function