From db1a1dc0b2eec26c36516f97102125878c2ff163 Mon Sep 17 00:00:00 2001 From: Tomas Volf <~@wolfsden.cz> Date: Sun, 6 Oct 2024 15:23:07 +0200 Subject: time-machine: Print profile path if no command is given. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of warning, print the profile path of the cached-channel-instance. * guix/scripts/time-machine.scm (guix-time-machine)[not command-line]: Print the profile directory. (show-help): Adjust usage message. * doc/guix.texi (Invoking guix time-machine): Document it. Change-Id: Id2c1ded514e6c5af45af9008ad1ef91beb509177 Signed-off-by: Ludovic Courtès --- doc/guix.texi | 5 +++++ guix/scripts/time-machine.scm | 44 ++++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 3ae39ebcd9..4aafcf9cc0 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4762,6 +4762,11 @@ Note that @command{guix time-machine} can trigger builds of channels and their dependencies, and these are controlled by the standard build options (@pxref{Common Build Options}). +If @command{guix time-machine} is executed without any command, it +prints the file name of the profile that would be used to execute the +command. This is sometimes useful if you need to get store file name of +the profile---e.g., when you want to @command{guix copy} it. + @node Inferiors @section Inferiors diff --git a/guix/scripts/time-machine.scm b/guix/scripts/time-machine.scm index d9ce85df84..21145239d4 100644 --- a/guix/scripts/time-machine.scm +++ b/guix/scripts/time-machine.scm @@ -52,8 +52,10 @@ ;;; (define (show-help) - (display (G_ "Usage: guix time-machine [OPTION] -- COMMAND ARGS... -Execute COMMAND ARGS... in an older version of Guix.\n")) + (display (G_ "Usage: guix time-machine [OPTION] [-- COMMAND ARGS...] +Execute COMMAND ARGS... in an older version of Guix. + +If COMMAND is not provided, print path to the time-machine profile.\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) (display (G_ " @@ -179,22 +181,22 @@ to %OLDEST-POSSIBLE-COMMIT is not that of an ancestor." (ref (assoc-ref opts 'ref)) (substitutes? (assoc-ref opts 'substitutes?)) (authenticate? (assoc-ref opts 'authenticate-channels?))) - (if command-line - (let* ((directory - (with-store store - (with-status-verbosity (assoc-ref opts 'verbosity) - (with-build-handler (build-notifier #:use-substitutes? - substitutes? - #:verbosity - (assoc-ref opts 'verbosity) - #:dry-run? #f) - (set-build-options-from-command-line store opts) - (cached-channel-instance store channels - #:authenticate? authenticate? - #:reference-channels - %reference-channels - #:validate-channels - validate-guix-channel))))) - (executable (string-append directory "/bin/guix"))) - (apply execl (cons* executable executable command-line))) - (warning (G_ "no command specified; nothing to do~%"))))))) + (let* ((directory + (with-store store + (with-status-verbosity (assoc-ref opts 'verbosity) + (with-build-handler (build-notifier #:use-substitutes? + substitutes? + #:verbosity + (assoc-ref opts 'verbosity) + #:dry-run? #f) + (set-build-options-from-command-line store opts) + (cached-channel-instance store channels + #:authenticate? authenticate? + #:reference-channels + %reference-channels + #:validate-channels + validate-guix-channel))))) + (executable (string-append directory "/bin/guix"))) + (if command-line + (apply execl (cons* executable executable command-line)) + (format #t "~a\n" directory))))))) -- cgit v1.2.3