X-Git-Url: https://git.distorted.org.uk/~mdw/lisp/blobdiff_plain/7f853a8ae70d1f8c922db2840194aa0afbbe4f79..89663cc1628de11b862f6a1ad36666044838e7f8:/optparse.lisp diff --git a/optparse.lisp b/optparse.lisp index 37d27de..1322e10 100644 --- a/optparse.lisp +++ b/optparse.lisp @@ -28,7 +28,7 @@ (defpackage #:optparse (:use #:common-lisp #:mdw.base #:mdw.sys-base #:mdw.str) - (:export #:exit #:*program-name* #:*command-line-strings* + (:export #:exit #:*program-name* #:*command-line* #:moan #:die #:option #:optionp #:make-option #:opt-short-name #:opt-long-name #:opt-tag #:opt-negated-tag @@ -74,7 +74,13 @@ (lambda (o s k) (declare (ignore k)) (format s - "#" + #.(concatenate 'string + "#") (opt-short-name o) (opt-long-name o) (opt-arg-name o) @@ -136,7 +142,7 @@ (:constructor make-option-parser (&key ((:args argstmp) - (cdr *command-line-strings*)) + (cdr *command-line*)) (options *options*) (non-option :skip) ((:numericp numeric-p)) @@ -152,7 +158,7 @@ "An option parser object. Slots: ARGS The arguments to be parsed. Usually this will be - *command-line-strings*. + *command-line*. OPTIONS List of option structures describing the acceptable options. @@ -289,8 +295,10 @@ (option-parse-error "Unknown option `~A'" optname)) ((cdr matches) (option-parse-error - "~ -Ambiguous long option `~A' -- could be any of:~{~% --~A~}" + #.(concatenate 'string + "Ambiguous long option `~A' -- " + "could be any of:" + "~{~%~8T--~A~}") optname (mapcar #'opt-long-name matches)))) (process-option (car matches) @@ -565,7 +573,9 @@ Ambiguous long option `~A' -- could be any of:~{~% --~A~}" (when (or (and min (< v min)) (and max (> v max))) (option-parse-error - "Integer ~A out of range (must have ~@[~D <= ~]x~@[ <= ~D~])" + #.(concatenate 'string + "Integer ~A out of range " + "(must have ~@[~D <= ~]x~@[ <= ~D~])") arg min max)) (setf var v))) @@ -596,14 +606,18 @@ Ambiguous long option `~A' -- could be any of:~{~% --~A~}" (push k matches))))) (cond ((null matches) - (option-parse-error "Argument `~A' invalid: must be one of:~ - ~{~%~8T~(~A~)~}" + (option-parse-error #.(concatenate 'string + "Argument `~A' invalid: " + "must be one of:" + "~{~%~8T~(~A~)~}") arg valid)) ((null (cdr matches)) (setf var (car matches))) (t - (option-parse-error "Argument `~A' ambiguous: may be any of:~ - ~{~%~8T~(~A~)~}" + (option-parse-error #.(concatenate 'string + "Argument `~A' ambiguous: " + "may be any of:" + "~{~%~8T~(~A~)~}") arg matches))))))) (defopthandler list (var arg) (&optional handler &rest handler-args) @@ -840,12 +854,13 @@ Ambiguous long option `~A' -- could be any of:~{~% --~A~}" (defun show-usage (prog usage &optional (stream *standard-output*)) "Basic usage-showing function. PROG is the program name, probably from - *command-line-strings*. USAGE is a list of possible usages of the - program, each of which is a list of items to be supplied by the user. In - simple cases, a single string is sufficient." + *command-line*. USAGE is a list of possible usages of the program, each + of which is a list of items to be supplied by the user. In simple cases, + a single string is sufficient." (pprint-logical-block (stream nil :prefix "Usage: ") (dolist (u (listify usage)) - (pprint-logical-block (stream nil :prefix (format nil "~A " prog)) + (pprint-logical-block (stream nil + :prefix (concatenate 'string prog " ")) (format stream "~{~A ~:_~}" (listify u))) (pprint-newline :mandatory stream)))) @@ -866,7 +881,6 @@ Ambiguous long option `~A' -- could be any of:~{~% --~A~}" (t (setf newlinep t) (pprint-logical-block (stream nil :prefix " ") - (pprint-indent :block 30 stream) (format stream "~:[ ~;-~:*~C,~] --~A" (opt-short-name o) (opt-long-name o)) @@ -876,15 +890,16 @@ Ambiguous long option `~A' -- could be any of:~{~% --~A~}" (opt-arg-name o))) (write-string " " stream) (pprint-tab :line 30 1 stream) + (pprint-indent :block 30 stream) (print-text doc stream)) (terpri stream))))))) (defun show-help (prog ver usage opts &optional (stream *standard-output*)) "Basic help-showing function. PROG is the program name, probably from - *command-line-strings*. VER is the program's version number. USAGE is a - list of the possible usages of the program, each of which may be a list of - items to be supplied. OPTS is the list of supported options, as provided - to the options parser. STREAM is the stream to write on." + *command-line*. VER is the program's version number. USAGE is a list of + the possible usages of the program, each of which may be a list of items + to be supplied. OPTS is the list of supported options, as provided to the + options parser. STREAM is the stream to write on." (format stream "~A, version ~A~2%" prog ver) (show-usage prog usage stream) (terpri stream)