[bug#75010,v4,1/5] gnu: machine: ssh: Refactor roll-back-managed-host.
Commit Message
* gnu/machine/ssh.scm (roll-back-managed-host): Use let* and mbegin.
Change-Id: Ic3d5039ecf01e1e965dce8a696e7dbd625d2b3c5
---
gnu/machine/ssh.scm | 57 +++++++++++++++++++++++----------------------
1 file changed, 29 insertions(+), 28 deletions(-)
@@ -3,6 +3,8 @@
;;; Copyright © 2020-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2024 Ricardo <rekado@elephly.net>
;;; Copyright © 2025 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2024 Felix Lechner <felix.lechner@lease-up.com>
+;;; Copyright © 2025 Herman Rimm <herman@rimm.ee>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -597,34 +599,33 @@ (define (roll-back-managed-host machine)
(define roll-back-failure
(condition (&message (message (G_ "could not roll-back machine")))))
- (mlet* %store-monad ((boot-parameters (machine-boot-parameters machine))
- (_ -> (if (< (length boot-parameters) 2)
- (raise roll-back-failure)))
- (entries -> (map boot-parameters->menu-entry
- (list (second boot-parameters))))
- (locale -> (boot-parameters-locale
- (second boot-parameters)))
- (crypto-dev -> (boot-parameters-store-crypto-devices
- (second boot-parameters)))
- (store-dir -> (boot-parameters-store-directory-prefix
- (second boot-parameters)))
- (old-entries -> (map boot-parameters->menu-entry
- (drop boot-parameters 2)))
- (bootloader -> (operating-system-bootloader
- (machine-operating-system machine)))
- (bootcfg (lower-object
- ((bootloader-configuration-file-generator
- (bootloader-configuration-bootloader
- bootloader))
- bootloader entries
- #:locale locale
- #:store-crypto-devices crypto-dev
- #:store-directory-prefix store-dir
- #:old-entries old-entries)))
- (remote-result (machine-remote-eval machine remote-exp)))
- (if (eqv? 'error remote-result)
- (raise roll-back-failure)
- (return remote-result))))
+ (mlet %store-monad
+ ((boot-parameters (machine-boot-parameters machine)))
+ (match boot-parameters
+ ((_ params rest ...)
+ (let* ((entries (list (boot-parameters->menu-entry params)))
+ (locale (boot-parameters-locale params))
+ (crypto-dev (boot-parameters-store-crypto-devices params))
+ (store-dir (boot-parameters-store-directory-prefix params))
+ (old-entries (map boot-parameters->menu-entry rest))
+ (bootloader (operating-system-bootloader
+ (machine-operating-system machine)))
+ (generate-bootloader-configuration-file
+ (bootloader-configuration-file-generator
+ (bootloader-configuration-bootloader bootloader))))
+ (mbegin %store-monad
+ (lower-object (generate-bootloader-configuration-file
+ bootloader entries
+ #:locale locale
+ #:store-crypto-devices crypto-dev
+ #:store-directory-prefix store-dir
+ #:old-entries old-entries)))
+ (mlet %store-monad
+ ((remote-result (machine-remote-eval machine remote-exp)))
+ (if (eqv? 'error remote-result)
+ (raise roll-back-failure)
+ (return remote-result)))))
+ (_ (raise roll-back-failure)))))
;;;