(cli args & specs)
THIS IS A LEGACY FUNCTION and may be deprecated in the future. Please use
clojure.tools.cli/parse-opts in new applications.
Parse the provided args using the given specs. Specs are vectors
describing a command line argument. For example:
["-p" "--port" "Port to listen on" :default 3000 :parse-fn #(Integer/parseInt %)]
First provide the switches (from least to most specific), then a doc
string, and pairs of options.
Valid options are :default, :parse-fn, and :flag. See
https://github.com/clojure/tools.cli/wiki/Documentation-for-0.2.4 for more
detailed examples.
Returns a vector containing a map of the parsed arguments, a vector
of extra arguments that did not match known switches, and a
documentation banner to provide usage instructions.
Source
(defn cli
"THIS IS A LEGACY FUNCTION and may be deprecated in the future. Please use
clojure.tools.cli/parse-opts in new applications.
Parse the provided args using the given specs. Specs are vectors
describing a command line argument. For example:
[\"-p\" \"--port\" \"Port to listen on\" :default 3000 :parse-fn #(Integer/parseInt %)]
First provide the switches (from least to most specific), then a doc
string, and pairs of options.
Valid options are :default, :parse-fn, and :flag. See
https://github.com/clojure/tools.cli/wiki/Documentation-for-0.2.4 for more
detailed examples.
Returns a vector containing a map of the parsed arguments, a vector
of extra arguments that did not match known switches, and a
documentation banner to provide usage instructions."
[args & specs]
(let [[desc specs] (if (string? (first specs))
[(first specs) (rest specs)]
[nil specs])
specs (map generate-spec specs)
args (normalize-args specs args)]
(let [[options extra-args] (apply-specs specs args)
banner (with-out-str (banner-for desc specs))]
[options extra-args banner])))