gpgscm: Improve option parsing.
authorJustus Winter <justus@g10code.com>
Mon, 19 Jun 2017 14:29:08 +0000 (16:29 +0200)
committerJustus Winter <justus@g10code.com>
Mon, 19 Jun 2017 14:51:31 +0000 (16:51 +0200)
* tests/gpgscm/tests.scm (flag): Accept arguments of the form
'--foo=bar'.

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

index eee8ce5..b66240d 100644 (file)
 
 ;; Command line flag handling.  Returns the elements following KEY in
 ;; ARGUMENTS up to the next argument, or #f if KEY is not in
-;; ARGUMENTS.
+;; ARGUMENTS.  If 'KEY=XYZ' is encountered, then the singleton list
+;; containing 'XYZ' is returned.
 (define (flag key arguments)
   (cond
    ((null? arguments)
       (if (or (null? args) (string-prefix? (car args) "--"))
          (reverse acc)
          (loop (cons (car args) acc) (cdr args)))))
+   ((string-prefix? (car arguments) (string-append key "="))
+    (list (substring (car arguments)
+                    (+ (string-length key) 1)
+                    (string-length (car arguments)))))
    ((string=? "--" (car arguments))
     #f)
    (else
 (assert (equal? (flag "--xxx" '("--yyy")) #f))
 (assert (equal? (flag "--xxx" '("--xxx")) '()))
 (assert (equal? (flag "--xxx" '("--xxx" "yyy")) '("yyy")))
+(assert (equal? (flag "--xxx" '("--xxx=foo" "yyy")) '("foo")))
 (assert (equal? (flag "--xxx" '("--xxx" "yyy" "zzz")) '("yyy" "zzz")))
 (assert (equal? (flag "--xxx" '("--xxx" "yyy" "zzz" "--")) '("yyy" "zzz")))
 (assert (equal? (flag "--xxx" '("--xxx" "yyy" "--" "zzz")) '("yyy")))