gpgscm: Improve option parsing.

* tests/gpgscm/tests.scm (flag): Accept arguments of the form
'--foo=bar'.

Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
Justus Winter 2017-06-19 16:29:08 +02:00
parent 6639aedaee
commit e555e7ed7d
No known key found for this signature in database
GPG Key ID: DD1A52F9DA8C9020
1 changed files with 7 additions and 1 deletions

View File

@ -766,7 +766,8 @@
;; 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)
@ -777,6 +778,10 @@
(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
@ -784,6 +789,7 @@
(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")))