deploy: Factorize machine deployment.
* guix/scripts/deploy.scm (deploy-machine*): New procedure. (guix-deploy): Call it in 'for-each'.
This commit is contained in:
parent
4c60d5325e
commit
d089b23335
1 changed files with 24 additions and 18 deletions
|
@ -30,6 +30,7 @@
|
|||
#:use-module (guix status)
|
||||
#:use-module (ice-9 format)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (srfi srfi-37)
|
||||
|
@ -114,6 +115,27 @@ Perform the deployment specified by FILE.\n"))
|
|||
(current-error-port))
|
||||
(display "\n\n" (current-error-port))))
|
||||
|
||||
(define (deploy-machine* store machine)
|
||||
"Deploy MACHINE, taking care of error handling."
|
||||
(info (G_ "deploying to ~a...~%")
|
||||
(machine-display-name machine))
|
||||
|
||||
(guard (c ((message-condition? c)
|
||||
(report-error (G_ "failed to deploy ~a: ~a~%")
|
||||
(machine-display-name machine)
|
||||
(condition-message c)))
|
||||
((deploy-error? c)
|
||||
(when (deploy-error-should-roll-back c)
|
||||
(info (G_ "rolling back ~a...~%")
|
||||
(machine-display-name machine))
|
||||
(run-with-store store (roll-back-machine machine)))
|
||||
(apply throw (deploy-error-captured-args c))))
|
||||
(run-with-store store (deploy-machine machine))
|
||||
|
||||
(info (G_ "successfully deployed ~a~%")
|
||||
(machine-display-name machine))))
|
||||
|
||||
|
||||
(define (guix-deploy . args)
|
||||
(define (handle-argument arg result)
|
||||
(alist-cons 'file arg result))
|
||||
|
@ -129,21 +151,5 @@ Perform the deployment specified by FILE.\n"))
|
|||
(set-build-options-from-command-line store opts)
|
||||
(with-build-handler (build-notifier #:use-substitutes?
|
||||
(assoc-ref opts 'substitutes?))
|
||||
(for-each (lambda (machine)
|
||||
(info (G_ "deploying to ~a...~%")
|
||||
(machine-display-name machine))
|
||||
(parameterize ((%graft? (assq-ref opts 'graft?)))
|
||||
(guard (c ((message-condition? c)
|
||||
(report-error (G_ "failed to deploy ~a: ~a~%")
|
||||
(machine-display-name machine)
|
||||
(condition-message c)))
|
||||
((deploy-error? c)
|
||||
(when (deploy-error-should-roll-back c)
|
||||
(info (G_ "rolling back ~a...~%")
|
||||
(machine-display-name machine))
|
||||
(run-with-store store (roll-back-machine machine)))
|
||||
(apply throw (deploy-error-captured-args c))))
|
||||
(run-with-store store (deploy-machine machine))
|
||||
(info (G_ "successfully deployed ~a~%")
|
||||
(machine-display-name machine)))))
|
||||
machines))))))
|
||||
(parameterize ((%graft? (assq-ref opts 'graft?)))
|
||||
(for-each (cut deploy-machine* store <>) machines)))))))
|
||||
|
|
Reference in a new issue