diff options
author | Ludovic Courtès <ludovic.courtes@inria.fr> | 2019-02-07 14:54:43 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-02-07 15:46:45 +0100 |
commit | 487cbb0164c715e722b622fa800fa0b217fa132c (patch) | |
tree | a5ac1d86abb0cb575496bb2293c5e325d7d13b2f /guix/ui.scm | |
parent | 89ea6252b6849131ba35d141006e1bbf3a49594f (diff) | |
download | guix-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.scm | 8 |
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))) |