X-Git-Url: https://git.jsancho.org/?p=guile-click.git;a=blobdiff_plain;f=click%2Futil.scm;h=e83e15319a915d16cb43e2ab4cfc14efe207126b;hp=4fc80bad05526d47a2a0f8ed22dc02e7ef3d27fe;hb=432c741eb5dac653c1a65fae2b8f15c4b444897f;hpb=a2c12dede99c0d296194699e025a2e541c8a98a0 diff --git a/click/util.scm b/click/util.scm index 4fc80ba..e83e153 100644 --- a/click/util.scm +++ b/click/util.scm @@ -18,14 +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)) @@ -45,8 +49,21 @@ (cadr property) default))) -(define* (option-default-value option #:optional (no-prompt #f)) - "Get default value for option, asking user if prompt property is set" +(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)))