ui: Add procedures to display a profile generation.
* guix/scripts/package.scm (guix-package)[process-query](list-generations): Move part of the body to 'delete-generation' and 'display-profile-content'. * guix/ui.scm (display-generation, display-profile-content): New procedures.
This commit is contained in:
parent
d50cb56d9b
commit
ad18c7e64c
|
@ -789,25 +789,8 @@ more information.~%"))
|
|||
(('list-generations pattern)
|
||||
(define (list-generation number)
|
||||
(unless (zero? number)
|
||||
(let ((header (format #f (_ "Generation ~a\t~a") number
|
||||
(date->string
|
||||
(time-utc->date
|
||||
(generation-time profile number))
|
||||
"~b ~d ~Y ~T")))
|
||||
(current (generation-number profile)))
|
||||
(if (= number current)
|
||||
(format #t (_ "~a\t(current)~%") header)
|
||||
(format #t "~a~%" header)))
|
||||
(for-each (match-lambda
|
||||
(($ <manifest-entry> name version output location _)
|
||||
(format #t " ~a\t~a\t~a\t~a~%"
|
||||
name version output location)))
|
||||
|
||||
;; Show most recently installed packages last.
|
||||
(reverse
|
||||
(manifest-entries
|
||||
(profile-manifest
|
||||
(generation-file-name profile number)))))
|
||||
(display-generation profile number)
|
||||
(display-profile-content profile number)
|
||||
(newline)))
|
||||
|
||||
(cond ((not (file-exists? profile)) ; XXX: race condition
|
||||
|
|
28
guix/ui.scm
28
guix/ui.scm
|
@ -85,6 +85,8 @@
|
|||
string->generations
|
||||
string->duration
|
||||
matching-generations
|
||||
display-generation
|
||||
display-profile-content
|
||||
run-guix-command
|
||||
run-guix
|
||||
program-name
|
||||
|
@ -1015,6 +1017,32 @@ DURATION-RELATION with the current time."
|
|||
filter-by-duration)
|
||||
(else #f)))
|
||||
|
||||
(define (display-generation profile number)
|
||||
"Display a one-line summary of generation NUMBER of PROFILE."
|
||||
(unless (zero? number)
|
||||
(let ((header (format #f (_ "Generation ~a\t~a") number
|
||||
(date->string
|
||||
(time-utc->date
|
||||
(generation-time profile number))
|
||||
"~b ~d ~Y ~T")))
|
||||
(current (generation-number profile)))
|
||||
(if (= number current)
|
||||
(format #t (_ "~a\t(current)~%") header)
|
||||
(format #t "~a~%" header)))))
|
||||
|
||||
(define (display-profile-content profile number)
|
||||
"Display the packages in PROFILE, generation NUMBER, in a human-readable
|
||||
way."
|
||||
(for-each (match-lambda
|
||||
(($ <manifest-entry> name version output location _)
|
||||
(format #t " ~a\t~a\t~a\t~a~%"
|
||||
name version output location)))
|
||||
|
||||
;; Show most recently installed packages last.
|
||||
(reverse
|
||||
(manifest-entries
|
||||
(profile-manifest (generation-file-name profile number))))))
|
||||
|
||||
(define* (package-specification->name+version+output spec
|
||||
#:optional (output "out"))
|
||||
"Parse package specification SPEC and return three value: the specified
|
||||
|
|
Loading…
Reference in New Issue