diff options
author | Mark H Weaver <mhw@netris.org> | 2016-11-07 00:33:16 -0500 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2016-11-07 00:33:16 -0500 |
commit | 71e21fb26dceef7a665b3b1c0dec7ebd92d8ec82 (patch) | |
tree | 7553a6f9ee2ed7494968e7277897098559eacf23 /guix/profiles.scm | |
parent | 19ac2ba858ebc46db96364809ebfc129be9e4ccf (diff) | |
parent | 14ac8e4865206f5cd1278cd962d01ce27890d51f (diff) | |
download | guix-patches-71e21fb26dceef7a665b3b1c0dec7ebd92d8ec82.tar guix-patches-71e21fb26dceef7a665b3b1c0dec7ebd92d8ec82.tar.gz |
Merge branch 'master' into core-updates
Diffstat (limited to 'guix/profiles.scm')
-rw-r--r-- | guix/profiles.scm | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/guix/profiles.scm b/guix/profiles.scm index 6a9e570a3f..b56b8f4c79 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -97,6 +98,7 @@ generation-number generation-numbers profile-generations + relative-generation-spec->number relative-generation previous-generation-number generation-time @@ -1048,6 +1050,23 @@ former profiles were found." '() generations))) +(define (relative-generation-spec->number profile spec) + "Return PROFILE's generation specified by SPEC, which is a string. The SPEC +may be a N, -N, or +N, where N is a number. If the spec is N, then the number +returned is N. If it is -N, then the number returned is the profile's current +generation number minus N. If it is +N, then the number returned is the +profile's current generation number plus N. Return #f if there is no such +generation." + (let ((number (string->number spec))) + (and number + (case (string-ref spec 0) + ((#\+ #\-) + (relative-generation profile number)) + (else (if (memv number (profile-generations profile)) + number + #f)))))) + + (define* (relative-generation profile shift #:optional (current (generation-number profile))) "Return PROFILE's generation shifted from the CURRENT generation by SHIFT. |