gpgscm: Library improvements.
authorJustus Winter <justus@g10code.com>
Fri, 14 Jul 2017 10:57:41 +0000 (12:57 +0200)
committerJustus Winter <justus@g10code.com>
Fri, 14 Jul 2017 10:57:41 +0000 (12:57 +0200)
* tests/gpgscm/repl.scm (prompt-yes-no?): New function.
* tests/gpgscm/tests.scm (pathsep-split): Likewise.
(pathsep-join): Likewise.
(with-path): Use the new function.

Signed-off-by: Justus Winter <justus@g10code.com>
tests/gpgscm/repl.scm
tests/gpgscm/tests.scm

index 84454dc..833ec0d 100644 (file)
 (define (interactive-repl . environment)
   (repl (lambda (p) (prompt-append-prefix "gpgscm " p))
        (if (null? environment) (interaction-environment) (car environment))))
+
+;; Ask a yes/no question.
+(define (prompt-yes-no? question default)
+  (let ((answer (prompt (string-append question "? ["
+                                      (if default "Y/n" "y/N") "] "))))
+    (cond
+     ((= 0 (string-length answer))
+      default)
+     ((or (equal? "y" answer) (equal? "Y" answer))
+      #t)
+     (else
+      #f))))
index 06084de..40ba7e3 100644 (file)
 (define (in-srcdir . names)
   (canonical-path (apply path-join (cons (getenv "abs_top_srcdir") names))))
 
+;; Split a list of paths.
+(define (pathsep-split s)
+  (string-split s *pathsep*))
+
+;; Join a list of paths.
+(define (pathsep-join paths)
+  (foldr (lambda (a b) (string-append a (string *pathsep*) b))
+        (car paths)
+        (cdr paths)))
+
 ;; Try to find NAME in PATHS.  Returns the full path name on success,
 ;; or raises an error.
 (define (path-expand name paths)
 ;;   (load (with-path "library.scm"))
 (define (with-path name)
   (catch name
-        (path-expand name (string-split (getenv "GPGSCM_PATH") *pathsep*))))
+        (path-expand name (pathsep-split (getenv "GPGSCM_PATH")))))
 
 (define (basename path)
   (let ((i (string-index path #\/)))