summaryrefslogtreecommitdiff
path: root/guix/ui.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludovic.courtes@inria.fr>2019-02-07 14:54:43 +0100
committerLudovic Courtès <ludo@gnu.org>2019-02-07 15:46:45 +0100
commit487cbb0164c715e722b622fa800fa0b217fa132c (patch)
treea5ac1d86abb0cb575496bb2293c5e325d7d13b2f /guix/ui.scm
parent89ea6252b6849131ba35d141006e1bbf3a49594f (diff)
downloadguix-patches-487cbb0164c715e722b622fa800fa0b217fa132c.tar
guix-patches-487cbb0164c715e722b622fa800fa0b217fa132c.tar.gz
profiles: Raise an error for unmatched patterns.
Previously, "guix package -r something-not-installed" would silently complete. Now an error is raised. * guix/profiles.scm (&unmatched-pattern-error): New condition type. (manifest-matching-entries): Rewrite to raise an error when one of PATTERNS is not matched. * guix/ui.scm (call-with-error-handling): Handle 'unmatched-pattern-error?'. * tests/guix-package.sh: Add test. * tests/profiles.scm ("manifest-matching-entries"): Don't try to remove unmatched pattern. ("manifest-matching-entries, no match"): New test. ("manifest-transaction-effects"): Remove 'remove' field.
Diffstat (limited to 'guix/ui.scm')
-rw-r--r--guix/ui.scm8
1 files changed, 8 insertions, 0 deletions
diff --git a/guix/ui.scm b/guix/ui.scm
index 9eab4ba3f7..f0465519b6 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -643,6 +643,14 @@ or remove one of them from the profile.")
(leave (G_ "generation ~a of profile '~a' does not exist~%")
(missing-generation-error-generation c)
(profile-error-profile c)))
+ ((unmatched-pattern-error? c)
+ (let ((pattern (unmatched-pattern-error-pattern c)))
+ (leave (G_ "package '~a~@[@~a~]~@[:~a~]' not found in profile~%")
+ (manifest-pattern-name pattern)
+ (manifest-pattern-version pattern)
+ (match (manifest-pattern-output pattern)
+ ("out" #f)
+ (output output)))))
((profile-collision-error? c)
(let ((entry (profile-collision-error-entry c))
(conflict (profile-collision-error-conflict c)))