time-machine: Print profile path if no command is given.

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 <ludo@gnu.org>
This commit is contained in:
Tomas Volf 2024-10-06 15:23:07 +02:00 committed by Ludovic Courtès
parent 56632b081f
commit db1a1dc0b2
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 28 additions and 21 deletions

View file

@ -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

View file

@ -52,8 +52,10 @@ (define-module (guix scripts time-machine)
;;;
(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 @@ (define-command (guix-time-machine . args)
(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)))))))