aboutsummaryrefslogtreecommitdiff
path: root/guix/ui.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-10-26 21:16:20 +0100
committerLudovic Courtès <ludo@gnu.org>2015-10-27 00:01:20 +0100
commitad18c7e64c844350f295a2f79605800a7718ed78 (patch)
treef9592d3bafeab8ca6a54a8aa749b7d69198a9486 /guix/ui.scm
parentd50cb56d9b58f3e1605f59b35ce99942c3b70d24 (diff)
downloadgnu-guix-ad18c7e64c844350f295a2f79605800a7718ed78.tar
gnu-guix-ad18c7e64c844350f295a2f79605800a7718ed78.tar.gz
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.
Diffstat (limited to 'guix/ui.scm')
-rw-r--r--guix/ui.scm28
1 files changed, 28 insertions, 0 deletions
diff --git a/guix/ui.scm b/guix/ui.scm
index 59ff2a7fba..c45c50fa16 100644
--- a/guix/ui.scm
+++ b/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