(apply-defaults m)(apply-defaults m opts)Fills missing keys in m from defaults. Existing keys in m win.
Preserves metadata of m.
Supported options:
:exec-args - map of defaults.:spec - spec; :default entries become defaults via spec->opts.Fills missing keys in `m` from defaults. Existing keys in `m` win. Preserves metadata of `m`. Supported options: * `:exec-args` - map of defaults. * `:spec` - spec; `:default` entries become defaults via `spec->opts`.
(auto-coerce s)Auto-coerces s to data. Does not coerce when s is not a string.
If s:
true or false, it is coerced as booleanedn/read-string):, it is coerced as a keyword (through parse-keyword)Auto-coerces `s` to data. Does not coerce when `s` is not a string. If `s`: * is `true` or `false`, it is coerced as boolean * starts with number, it is coerced as a number (through Clojure's `edn/read-string`) * starts with `:`, it is coerced as a keyword (through [[parse-keyword]])
(coerce s f)Coerce string s using f. Does not coerce when s is not a string.
f may be a keyword (:boolean, :int, :double, :symbol,
:keyword) or a function. When f return nil, this is
interpreted as a parse failure and throws.
Coerce string `s` using `f`. Does not coerce when `s` is not a string. `f` may be a keyword (`:boolean`, `:int`, `:double`, `:symbol`, `:keyword`) or a function. When `f` return `nil`, this is interpreted as a parse failure and throws.
(coerce-opts m)(coerce-opts m opts)Coerces values in the map m using the provided configuration.
Does not coerce values that are not strings.
Returns a new map with coerced values.
Supported options:
:coerce - a map of option (keyword) names to type keywords (optionally wrapped in a collection).:spec - a spec of options. See spec.:error-fn - error handler, called with a map containing :cause (:coerce), :msg, :option, :value, and :opts.Coerces values in the map `m` using the provided configuration. Does not coerce values that are not strings. Returns a new map with coerced values. Supported options: * `:coerce` - a map of option (keyword) names to type keywords (optionally wrapped in a collection). * `:spec` - a spec of options. See [spec](https://github.com/babashka/cli#spec). * `:error-fn` - error handler, called with a map containing `:cause` (`:coerce`), `:msg`, `:option`, `:value`, and `:opts`.
(dispatch table args)(dispatch table args opts)Subcommand dispatcher.
Dispatches on longest matching command entry in table by matching
subcommands to the :cmds vector and invoking the correspondig :fn.
Table is in the form:
[{:cmds ["sub_1" .. "sub_n"] :fn f :args->opts [:lib]}
...
{:cmds [] :fn f}]
When a match is found, :fn called with the return value of
parse-args applied to args enhanced with:
:dispatch - the matching commands:args - concatenation of unparsed commands and args:rest-cmds: DEPRECATED, this will be removed in a future versionUse an empty :cmds vector to always match or to provide global options.
Provide an :error-fn to deal with non-matches.
Each entry in the table may have additional parse-args options.
For more information and examples, see README.md.
Subcommand dispatcher.
Dispatches on longest matching command entry in `table` by matching
subcommands to the `:cmds` vector and invoking the correspondig `:fn`.
Table is in the form:
```clojure
[{:cmds ["sub_1" .. "sub_n"] :fn f :args->opts [:lib]}
...
{:cmds [] :fn f}]
```
When a match is found, `:fn` called with the return value of
[[parse-args]] applied to `args` enhanced with:
* `:dispatch` - the matching commands
* `:args` - concatenation of unparsed commands and args
* `:rest-cmds`: DEPRECATED, this will be removed in a future version
Use an empty `:cmds` vector to always match or to provide global options.
Provide an `:error-fn` to deal with non-matches.
Each entry in the table may have additional [[parse-args]] options.
For more information and examples, see [README.md](README.md#subcommands).(merge-opts m & ms)Merges babashka CLI options.
Merges babashka CLI options.
(parse-args args)(parse-args args opts)Same as parse-opts with return data reshaped.
Returns a map with:
:opts parsed opts:args remaining unparsed argsSame as [[parse-opts]] with return data reshaped. Returns a map with: * `:opts` parsed opts * `:args` remaining unparsed `args`
(parse-cmds args)(parse-cmds args {:keys [no-keyword-opts]})Parses sub-commands (arguments not starting with an option prefix). Returns a map with:
:cmds - The parsed subcommands:args - The remaining (unparsed) argumentsParses sub-commands (arguments not starting with an option prefix). Returns a map with: * `:cmds` - The parsed subcommands * `:args` - The remaining (unparsed) arguments
(parse-keyword s)Parse keyword from s. Ignores leading :.
Parse keyword from `s`. Ignores leading `:`.
(parse-opts args)(parse-opts args opts)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.
Metadata on returned map, under :org.babashka/cli:
:args remaining unparsed args (not corresponding to any 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.:restrict - true or coll of keys. Throw on first parsed option not in set of keys or keys of :spec and :coerce combined.:require - a coll of options that are required. See require.:validate - a map of validator functions. See validate.:exec-args - a map of default args. Will be overridden by args specified in args. Values from :exec-args are NOT coerced or auto-coerced; provide them in their final form.:no-keyword-opts - true. Support only --foo-style opts (i.e. :foo will not work).:repeated-opts - true. Forces writing the option name for every value, e.g. --foo a --foo b, rather than --foo a b:args->opts - consume unparsed commands and args as options:collect - a map of collection fns. See custom collection handling.Examples:
(parse-opts ["foo" ":bar" "1"])
;; => ^{: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
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.
Metadata on returned map, under `:org.babashka/cli`:
* `:args` remaining unparsed `args` (not corresponding to any 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).
* `:restrict` - `true` or coll of keys. Throw on first parsed option not in set of keys or keys of `:spec` and `:coerce` combined.
* `:require` - a coll of options that are required. See [require](https://github.com/babashka/cli#restrict).
* `:validate` - a map of validator functions. See [validate](https://github.com/babashka/cli#validate).
* `:exec-args` - a map of default args. Will be overridden by args specified in `args`. Values from `:exec-args` are NOT coerced or auto-coerced; provide them in their final form.
* `:no-keyword-opts` - `true`. Support only `--foo`-style opts (i.e. `:foo` will not work).
* `:repeated-opts` - `true`. Forces writing the option name for every value, e.g. `--foo a --foo b`, rather than `--foo a b`
* `:args->opts` - consume unparsed commands and args as options
* `:collect` - a map of collection fns. See [custom collection handling](https://github.com/babashka/cli#custom-collection-handling).
Examples:
```clojure
(parse-opts ["foo" ":bar" "1"])
;; => ^{: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]](parse-opts* args
{:keys [coerce collect no-keyword-opts repeated-opts] :as opts})Parses CLI args into a raw opts map. Returns string values unchanged
(no coercion), does not apply :exec-args defaults, does not run
:restrict/:require/:validate. Result map includes
:org.babashka/cli metadata and internal ::implicit-true-keys /
::keys-order metadata used by coerce-opts.
Use this when you want to merge other sources (e.g. config files)
before coerce/validate. Pipeline: parse-opts* -> merge -> apply-defaults
-> coerce-opts -> validate-opts.
Supported options (subset of parse-opts): :alias/:aliases, :coerce,
:collect, :no-keyword-opts, :repeated-opts, :args->opts, :spec.
Parses CLI `args` into a raw opts map. Returns string values unchanged (no coercion), does not apply `:exec-args` defaults, does not run `:restrict`/`:require`/`:validate`. Result map includes `:org.babashka/cli` metadata and internal `::implicit-true-keys` / `::keys-order` metadata used by `coerce-opts`. Use this when you want to merge other sources (e.g. config files) before coerce/validate. Pipeline: `parse-opts*` -> merge -> `apply-defaults` -> `coerce-opts` -> `validate-opts`. Supported options (subset of `parse-opts`): `:alias`/`:aliases`, `:coerce`, `:collect`, `:no-keyword-opts`, `:repeated-opts`, `:args->opts`, `:spec`.
(spec->opts spec)(spec->opts spec {:keys [exec-args]})Converts spec into opts format. Pass existing opts as optional second argument.
Converts spec into opts format. Pass existing opts as optional second argument.
(validate-opts m)(validate-opts m opts)Validates the map m using the provided configuration. Returns m.
Supported options:
:restrict - true or coll of keys. Error on keys in m not in the restrict set or not derivable from :spec and :coerce.:require - a coll of options that are required.:validate - a map of option keys to validator functions (or maps with :pred and :ex-msg).:spec - a spec of options (restrict, require, validate extracted from it).:coerce - used with :restrict true to derive the set of known keys.:error-fn - error handler, called with a map containing :cause, :msg, :option, and :opts.Validates the map `m` using the provided configuration. Returns `m`. Supported options: * `:restrict` - `true` or coll of keys. Error on keys in `m` not in the restrict set or not derivable from `:spec` and `:coerce`. * `:require` - a coll of options that are required. * `:validate` - a map of option keys to validator functions (or maps with `:pred` and `:ex-msg`). * `:spec` - a spec of options (restrict, require, validate extracted from it). * `:coerce` - used with `:restrict true` to derive the set of known keys. * `:error-fn` - error handler, called with a map containing `:cause`, `:msg`, `:option`, and `:opts`.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |