ui: 'package->recutils' takes #:extra-fields.
* guix/ui.scm (package->recutils): Add #:extra-fields and honor it.
This commit is contained in:
		
							parent
							
								
									5c46c8582f
								
							
						
					
					
						commit
						4ee79f22f5
					
				
					 1 changed files with 16 additions and 6 deletions
				
			
		
							
								
								
									
										22
									
								
								guix/ui.scm
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								guix/ui.scm
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue