Alex Kost <alez...@gmail.com> skribis: > Ludovic Courtès (2014-10-07 20:00 +0400) wrote: > >> Alex Kost <alez...@gmail.com> skribis:
[...] >> It’d be enough for me to just call ‘switch-symlinks’ and let it throw >> ‘system-error’ if something’s wrong. The exception will be caught, the >> user will see a “No such file” error, and ‘guix package’ with exit with >> non-zero (this is done by ‘call-with-error-handling’.) > > ‘switch-symlinks’ does not throw an error even if files don't exist, so… Oh right, ‘symlink’ doesn’t care about its first argument. >> It’s less informative than what you did, though. The other option would >> be to define specific error condition types and throw them from here. >> >> WDYT? > > … I tried to make it this way, thank you for pointing. I made another > commit for adding and using condition types (3 patches are attached > now). Great. > Also I moved ‘process-query’ inside ‘with-error-handling’ (because I > used ‘raise’ there). Could there be unwanted consequences after that? No, I think it’s fine. > From d5e9abb0395a21e79d4f77181597103d4daf138c Mon Sep 17 00:00:00 2001 > From: Alex Kost <alez...@gmail.com> > Date: Wed, 8 Oct 2014 00:32:28 +0400 > Subject: [PATCH 1/3] profiles: Add condition types for profile and generation. > > * guix/profiles.scm (&profile-error, &generation-error): New condition types. > * guix/ui.scm (call-with-error-handling): Handle these types. > * guix/scripts/package.scm (roll-back, guix-package): Raise '&profile-error' > where needed. This is bikeshedding, but I would make a hierarchy like this: &profile-error, with ‘profile’ field ^ .———————————————–+———————————————–. | | &profile-not-found-error &missing-generation-error, with ‘generation’ field WDYT? Other than that the patch looks good. > From e47644b43aaa73885ca648118b6fc59fdb499303 Mon Sep 17 00:00:00 2001 > From: Alex Kost <alez...@gmail.com> > Date: Wed, 8 Oct 2014 00:39:42 +0400 > Subject: [PATCH 2/3] profiles: Add procedures for switching generations. > > * guix/scripts/package.scm (switch-to-previous-generation): Move to... > * guix/profiles.scm: ... here. Use 'switch-to-generation'. > (relative-generation): New procedure. > (previous-generation-number): Use it. > (switch-to-generation): New procedure. OK. > From 003e5c192796e8ea07491a94a85824a533155825 Mon Sep 17 00:00:00 2001 > From: Alex Kost <alez...@gmail.com> > Date: Wed, 8 Oct 2014 00:45:38 +0400 > Subject: [PATCH 3/3] guix package: Add '--switch-generation' option. > > * guix/scripts/package.scm: Add '--switch-generation' option. > (guix-package): Adjust accordingly. > * tests/guix-package.sh: Test it. > * doc/guix.texi (Invoking guix package): Document it. OK. Thanks again! Ludo’.