lint: Fix argument parsing when several packages are specified.

* guix/scripts/lint.scm (%options) <--checkers>: Remove 'arg-handler'
  parameter, and return a single value.
  (guix-lint)[parse-options]: Remove 'arg-handler' parameter from
  handlers.  Remove second seed to 'args-fold*'.
* tests/guix-lint.sh: Add test.
This commit is contained in:
Ludovic Courtès 2015-01-28 14:00:58 +01:00
parent 30347040de
commit 8fbf530260
2 changed files with 13 additions and 11 deletions

View file

@ -482,7 +482,7 @@ (define %options
;; * --certainty=[low,medium,high]: only run checkers that have at least this
;; 'certainty'.
(list (option '(#\c "checkers") #t #f
(lambda (opt name arg result arg-handler)
(lambda (opt name arg result)
(let ((names (map string->symbol (string-split arg #\,))))
(for-each (lambda (c)
(unless (memq c
@ -490,13 +490,12 @@ (define %options
%checkers))
(leave (_ "~a: invalid checker~%") c)))
names)
(values (alist-cons 'checkers
(alist-cons 'checkers
(filter (lambda (checker)
(member (lint-checker-name checker)
names))
%checkers)
result)
#f))))
result))))
(option '(#\h "help") #f #f
(lambda args
(show-help)
@ -517,11 +516,11 @@ (define (guix-lint . args)
(define (parse-options)
;; Return the alist of option values.
(args-fold* args %options
(lambda (opt name arg result arg-handler)
(lambda (opt name arg result)
(leave (_ "~A: unrecognized option~%") name))
(lambda (arg result arg-handler)
(lambda (arg result)
(alist-cons 'argument arg result))
%default-options #f))
%default-options))
(let* ((opts (parse-options))
(args (filter-map (match-lambda

View file

@ -73,3 +73,6 @@ then false; else true; fi
if guix lint -c synopsis,invalid-checker dummy 2>&1 | \
grep -q 'invalid-checker: invalid checker'
then true; else false; fi
# Make sure specifying multiple packages works.
guix lint -c inputs-should-be-native dummy dummy-42 dummy