summaryrefslogtreecommitdiff
path: root/guix/ui.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-10-26 23:01:06 +0100
committerLudovic Courtès <ludo@gnu.org>2015-10-27 00:01:20 +0100
commit06d45f4566469364b4c1fe6d3c71ecf58f5d4838 (patch)
tree20704b607a28fb48ee922485e400b353184c3c89 /guix/ui.scm
parent3bb168b0997d2ba2ef15e8eef2890582c8a6df9c (diff)
downloadgnu-guix-06d45f4566469364b4c1fe6d3c71ecf58f5d4838.tar
gnu-guix-06d45f4566469364b4c1fe6d3c71ecf58f5d4838.tar.gz
profiles: Add generation manipulation procedures.
* guix/scripts/package.scm (delete-generations): Use 'delete-generation*' instead of 'delete-generation'. (guix-package)[process-actions]: Use 'roll-back*' instead of 'roll-back' and 'switch-to-generation*' instead of 'switch-to-generation'. (link-to-empty-profile, switch-to-generation, switch-to-previous-generation, roll-back, delete-generation): Move to... * guix/profiles.scm: ... here. Adjust to not print messages and to return values that can be used by user interfaces. * guix/ui.scm (display-generation-change, roll-back*, switch-to-generation*, delete-generation*): New procedures.
Diffstat (limited to 'guix/ui.scm')
-rw-r--r--guix/ui.scm24
1 files changed, 24 insertions, 0 deletions
diff --git a/guix/ui.scm b/guix/ui.scm
index b7ed5e7d4d..72208e7de7 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -86,6 +86,9 @@
matching-generations
display-generation
display-profile-content
+ roll-back*
+ switch-to-generation*
+ delete-generation*
run-guix-command
run-guix
program-name
@@ -1035,6 +1038,27 @@ way."
(manifest-entries
(profile-manifest (generation-file-name profile number))))))
+(define (display-generation-change previous current)
+ (format #t (_ "switched from generation ~a to ~a~%") previous current))
+
+(define (roll-back* store profile)
+ "Like 'roll-back', but display what is happening."
+ (call-with-values
+ (lambda ()
+ (roll-back store profile))
+ display-generation-change))
+
+(define (switch-to-generation* profile number)
+ "Like 'switch-generation', but display what is happening."
+ (let ((previous (switch-to-generation profile number)))
+ (display-generation-change previous number)))
+
+(define (delete-generation* store profile generation)
+ "Like 'delete-generation', but display what is going on."
+ (format #t (_ "deleting ~a~%")
+ (generation-file-name profile generation))
+ (delete-generation store profile generation))
+
(define* (package-specification->name+version+output spec
#:optional (output "out"))
"Parse package specification SPEC and return three value: the specified