Prompt for values
authorJavier Sancho <jsf@jsancho.org>
Thu, 9 Sep 2021 16:48:43 +0000 (18:48 +0200)
committerJavier Sancho <jsf@jsancho.org>
Thu, 9 Sep 2021 16:48:43 +0000 (18:48 +0200)
click.scm
click/util.scm
examples/hello.scm

index c3769a448956d0ad78a2a52ba6b195e573da758a..afeb2f914fa1145ad0573108a18f37f9ae84b0f8 100644 (file)
--- a/click.scm
+++ b/click.scm
   (cond ((null? option-spec)
          '())
         (else
-         (let ((option (caar option-spec)))
-           (cons (cons option (option-ref options option #f))
+         (let* ((option (car option-spec))
+                (option-name (car option))
+                (default (option-default-value option)))
+           (cons (cons option-name (option-ref options option-name default))
                  (get-options-value options (cdr option-spec)))))))
 
 (define (command option-spec procedure)
index 65ad8627e12579b5a8d072638d0db43ed3b65e33..4fc80bad05526d47a2a0f8ed22dc02e7ef3d27fe 100644 (file)
 
 
 (define-module (click util)
+  #:use-module (ice-9 readline)
   #:use-module (click constant)
   #:export (getopt-long-option-spec
+            option-default-value
             option-property
             program-name
             %program-name))
     (if property
         (cadr property)
         default)))
+
+(define* (option-default-value option #:optional (no-prompt #f))
+  "Get default value for option, asking user if prompt property is set"
+  (let ((default (option-property option 'default)))
+    (if (not default)
+        (let ((prompt (option-property option 'prompt)))
+          (if prompt
+              (readline (format #f "~a: " prompt))
+              default))
+        default)))
index 9f00e6bbd5e3d279e37276d58afbdf49b00ce9d8..4f59cccf85f770a24df71e9b33c091a949a2089a 100755 (executable)
@@ -31,7 +31,7 @@
      "Simple program that greets NAME for a total of COUNT times."
      (let loop ((times count))
        (cond ((> times 0)
-              (format #t "Hello ~a!" name)
+              (format #t "Hello ~a!~%" name)
               (loop (- times 1))))))))
 
 (hello (command-line))