X-Git-Url: https://git.jsancho.org/?p=guile-click.git;a=blobdiff_plain;f=click%2Futil.scm;h=e83e15319a915d16cb43e2ab4cfc14efe207126b;hp=65ad8627e12579b5a8d072638d0db43ed3b65e33;hb=432c741eb5dac653c1a65fae2b8f15c4b444897f;hpb=7bb66a7166059976c81aef6e76f205c14b45cc45 diff --git a/click/util.scm b/click/util.scm index 65ad862..e83e153 100644 --- a/click/util.scm +++ b/click/util.scm @@ -18,12 +18,18 @@ (define-module (click util) + #:use-module (ice-9 getopt-long) + #:use-module (ice-9 readline) #:use-module (click constant) #:export (getopt-long-option-spec + get-option-default-value + get-values + option-default-value option-property program-name %program-name)) + (define %program-name (make-fluid "guile")) (define (program-name) (fluid-ref %program-name)) @@ -42,3 +48,26 @@ (if property (cadr property) default))) + +(define (get-values option-spec values) + "Return an associated list with values for all the options in option-spec" + (cond ((null? option-spec) + '()) + (else + (let* ((option (car option-spec)) + (option-name (car option)) + (value (or (option-ref values option-name #f) + (get-option-default-value option)))) + (cons (cons option-name value) + (get-values (cdr option-spec) values)))))) + + +(define* (get-option-default-value option #:optional (no-prompt #f)) + "Get 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)))