diff --git a/API.md b/API.md
index 4e99d5e..1c1be9b 100644
--- a/API.md
+++ b/API.md
@@ -10,10 +10,10 @@
- [`opts->table`](#babashka.cli/opts->table)
- [`pad`](#babashka.cli/pad)
- [`pad-cells`](#babashka.cli/pad-cells)
- - [`parse-args`](#babashka.cli/parse-args) - Same as [parse-opts](#babashka.cli/parse-opts) but separates parsed opts into :opts and adds :cmds and :rest-args on the top level instead of metadata.
- - [`parse-cmds`](#babashka.cli/parse-cmds) - Parses sub-commands (arguments not starting with an option prefix) and returns a map with: * :cmds - The parsed subcommands * :args - The remaining (unparsed) arguments.
+ - [`parse-args`](#babashka.cli/parse-args) - Same as [parse-opts](#babashka.cli/parse-opts) with return data reshaped.
+ - [`parse-cmds`](#babashka.cli/parse-cmds) - Parses sub-commands (arguments not starting with an option prefix).
- [`parse-keyword`](#babashka.cli/parse-keyword) - Parse keyword from s.
- - [`parse-opts`](#babashka.cli/parse-opts) - Parse the command line arguments args, a seq of strings.
+ - [`parse-opts`](#babashka.cli/parse-opts) - Returns a map of options parsed from command line arguments args, a seq of strings.
- [`spec->opts`](#babashka.cli/spec->opts) - Converts spec into opts format.
- [`babashka.cli.exec`](#babashka.cli.exec)
- [`-main`](#babashka.cli.exec/-main) - Main entrypoint for command line usage.
@@ -86,21 +86,21 @@ Subcommand dispatcher.
Each entry in the table may have additional [`parse-args`](#babashka.cli/parse-args) options.
For more information and examples, see [README.md](README.md#subcommands).
-
Source
+Source
## `format-opts`
``` clojure
(format-opts {:as cfg, :keys [indent], :or {indent 2}})
```
Function.
-Source
+Source
## `format-table`
``` clojure
(format-table {:keys [rows indent], :or {indent 2}})
```
Function.
-Source
+Source
## `merge-opts`
``` clojure
@@ -123,21 +123,21 @@ Function.
(opts->table {:keys [spec order]})
```
Function.
-Source
+Source
## `pad`
``` clojure
(pad len s)
```
Function.
-Source
+Source
## `pad-cells`
``` clojure
(pad-cells rows)
```
Function.
-Source
+Source
## `parse-args`
``` clojure
@@ -146,9 +146,12 @@ Function.
```
Function.
-Same as [`parse-opts`](#babashka.cli/parse-opts) but separates parsed opts into `:opts` and adds
- `:cmds` and `:rest-args` on the top level instead of metadata.
-Source
+Same as [`parse-opts`](#babashka.cli/parse-opts) with return data reshaped.
+
+ Returns a map with:
+ * `:opts` parsed opts
+ * `:args` remaining unparsed `args`
+Source
## `parse-cmds`
``` clojure
@@ -157,7 +160,7 @@ Same as [`parse-opts`](#babashka.cli/parse-opts) but separates parsed opts into
```
Function.
-Parses sub-commands (arguments not starting with an option prefix) and returns a map with:
+Parses sub-commands (arguments not starting with an option prefix). Returns a map with:
* `:cmds` - The parsed subcommands
* `:args` - The remaining (unparsed) arguments
Source
@@ -178,15 +181,13 @@ Parse keyword from `s`. Ignores leading `:`.
```
Function.
-Parse the command line arguments `args`, a seq of strings.
+Returns a map of options parsed from command line arguments `args`, a seq of strings.
Instead of a leading `:` either `--` or `-` may be used as well.
- Return value: a map with parsed opts.
-
- Additional data such as arguments (not corresponding to any options)
- are available under the `:org.babashka/cli` key in the metadata.
+ Metadata on returned map, under `:org.babashka/cli`:
+ * `:args` remaining unparsed `args` (not corresponding to any options)
- Supported options:
+ Supported `opts`:
* `:coerce` - a map of option (keyword) names to type keywords (optionally wrapped in a collection.)
* `:alias` - a map of short names to long names.
* `:spec` - a spec of options. See [spec](https://github.com/babashka/cli#spec).
@@ -203,14 +204,14 @@ Parse the command line arguments `args`, a seq of strings.
```clojure
(parse-opts ["foo" ":bar" "1"])
- ;; => {:bar "1", :org.babashka/cli {:cmds ["foo"]}}
+ ;; => ^{:org.babashka/cli {:args ["foo"]}} {:bar 1}
(parse-opts [":b" "1"] {:aliases {:b :bar} :coerce {:bar parse-long}})
;; => {:bar 1}
(parse-opts ["--baz" "--qux"] {:spec {:baz {:desc "Baz"}} :restrict true})
;; => throws 'Unknown option --qux' exception b/c there is no :qux key in the spec
```
-
-Source
+ See also: [`parse-args`](#babashka.cli/parse-args)
+Source
## `spec->opts`
``` clojure
diff --git a/src/babashka/cli.cljc b/src/babashka/cli.cljc
index 9bec57a..a6d2471 100644
--- a/src/babashka/cli.cljc
+++ b/src/babashka/cli.cljc
@@ -205,7 +205,7 @@
spec)))
(defn parse-cmds
- "Parses sub-commands (arguments not starting with an option prefix) and returns a map with:
+ "Parses sub-commands (arguments not starting with an option prefix). Returns a map with:
* `:cmds` - The parsed subcommands
* `:args` - The remaining (unparsed) arguments"
([args] (parse-cmds args nil))
@@ -265,15 +265,13 @@
:fst-colon fst-colon?}))
(defn parse-opts
- "Parse the command line arguments `args`, a seq of strings.
+ "Returns a map of options parsed from command line arguments `args`, a seq of strings.
Instead of a leading `:` either `--` or `-` may be used as well.
- Return value: a map with parsed opts.
+ Metadata on returned map, under `:org.babashka/cli`:
+ * `:args` remaining unparsed `args` (not corresponding to any options)
- Additional data such as arguments (not corresponding to any options)
- are available under the `:org.babashka/cli` key in the metadata.
-
- Supported options:
+ Supported `opts`:
* `:coerce` - a map of option (keyword) names to type keywords (optionally wrapped in a collection.)
* `:alias` - a map of short names to long names.
* `:spec` - a spec of options. See [spec](https://github.com/babashka/cli#spec).
@@ -290,13 +288,13 @@
```clojure
(parse-opts [\"foo\" \":bar\" \"1\"])
- ;; => {:bar \"1\", :org.babashka/cli {:cmds [\"foo\"]}}
+ ;; => ^{:org.babashka/cli {:args [\"foo\"]}} {:bar 1}
(parse-opts [\":b\" \"1\"] {:aliases {:b :bar} :coerce {:bar parse-long}})
;; => {:bar 1}
(parse-opts [\"--baz\" \"--qux\"] {:spec {:baz {:desc \"Baz\"}} :restrict true})
;; => throws 'Unknown option --qux' exception b/c there is no :qux key in the spec
```
- "
+ See also: [[parse-args]]"
([args] (parse-opts args {}))
([args opts]
(let [spec (:spec opts)
@@ -513,24 +511,17 @@
opts)))
(defn parse-args
- "Same as [[parse-opts]] but separates parsed opts into `:opts` and adds
- `:cmds` and `:rest-args` on the top level instead of metadata."
+ "Same as [[parse-opts]] with return data reshaped.
+
+ Returns a map with:
+ * `:opts` parsed opts
+ * `:args` remaining unparsed `args`"
([args] (parse-args args {}))
([args opts]
(let [opts (parse-opts args opts)
cli-opts (-> opts meta :org.babashka/cli)]
(assoc cli-opts :opts (dissoc opts :org.babashka/cli)))))
-#_(defn commands
- "Returns commands, i.e. non-option arguments passed before the first option argument."
- [parsed-opts]
- (-> parsed-opts meta :org.babashka/cli :cmds))
-
-#_(defn remaining
- "Returns remaining arguments, i.e. arguments after `--`"
- [parsed-opts]
- (-> parsed-opts meta :org.babashka/cli :rest-args))
-
(defn- kw->str [kw]
(subs (str kw) 1))