~ chicken-core (chicken-5) 59b5a6576b2b305f32905008d29122b97b93123f
commit 59b5a6576b2b305f32905008d29122b97b93123f
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Sun Apr 23 15:41:19 2017 +1200
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Sun Apr 23 15:41:19 2017 +1200
Re-prompt on invalid input in replace-extension-question
This redisplays the "replace extension? yes/no/abort" prompt when the
user enters an invalid response on egg upgrades, so that it's clear
chicken-install is still waiting for input. Also, fix the indentation of
the procedure's `filter-map` form.
diff --git a/chicken-install.scm b/chicken-install.scm
index d3d7558e..69179255 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -720,34 +720,32 @@
(append
(list "The following installed extensions are outdated, because `"
(car e+d+v)
- "' requires later versions:\n")
- (filter-map
- (lambda (e)
- (cond ((assq (string->symbol (car e)) override) =>
- (lambda (a)
- (unless (equal? (cadr a) (cdr e))
- (warning
- (sprintf "version `~a' of extension `~a' overrides required version `~a'"
- (cadr a) (car a) (cdr e))))
- #f))
- (else
- (conc
- " " (car e)
- " (" (let ((v (assq 'version (extension-information (car e)))))
- (if v (cadr v) "???"))
- " -> " (cdr e) ")"
- #\newline) )))
- upgrade)
- '("\nDo you want to replace the existing extensions ? (yes/no/abort) "))
- ""))
- (flush-output)
+ "' requires later versions:\n\n")
+ (filter-map
+ (lambda (e)
+ (cond ((assq (string->symbol (car e)) override) =>
+ (lambda (a)
+ (unless (equal? (cadr a) (cdr e))
+ (warning
+ (sprintf "version `~a' of extension `~a' overrides required version `~a'"
+ (cadr a) (car a) (cdr e))))
+ #f))
+ (else
+ (conc " " (car e)
+ " (" (let ((v (assq 'version (extension-information (car e)))))
+ (if v (cadr v) "unknown"))
+ " -> " (cdr e) ")" #\newline))))
+ upgrade))
+ ""))
(let loop ()
+ (display "Do you want to replace the existing extensions? (yes/no/abort) ")
+ (flush-output)
(let ((r (trim (read-line))))
(cond ((string=? r "yes"))
((string=? r "no") #f)
((string=? r "abort") (exit 1))
(else (loop))))))
-
+
(define (trim str)
(define (left lst)
(cond ((null? lst) '())
Trap