Liking cljdoc? Tell your friends :D

babashka.cli


apply-defaultsclj/s

(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`.
sourceraw docstring

auto-coerceclj/s

(auto-coerce s)

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)
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]])
sourceraw docstring

coerceclj/s

(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.
sourceraw docstring

coerce-optsclj/s

(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`.
sourceraw docstring

dispatchclj/s

(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 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.

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).
sourceraw docstring

format-optsclj/s

(format-opts {:as cfg :keys [indent] :or {indent 2}})
source

format-tableclj/s

(format-table {:keys [rows indent] :or {indent 2}})
source

merge-optsclj/s

(merge-opts m & ms)

Merges babashka CLI options.

Merges babashka CLI options.
sourceraw docstring

number-char?clj/s

(number-char? c)
source

opts->tableclj/s

(opts->table {:keys [spec order columns]})
source

padclj/s

(pad len s)
source

pad-cellsclj/s

(pad-cells rows)
source

parse-argsclj/s

(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 args
Same as [[parse-opts]] with return data reshaped.

Returns a map with:
* `:opts` parsed opts
* `:args` remaining unparsed `args`
sourceraw docstring

parse-cmdsclj/s

(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) arguments
Parses sub-commands (arguments not starting with an option prefix). Returns a map with:
* `:cmds` - The parsed subcommands
* `:args` - The remaining (unparsed) arguments
sourceraw docstring

parse-keywordclj/s

(parse-keyword s)

Parse keyword from s. Ignores leading :.

Parse keyword from `s`. Ignores leading `:`.
sourceraw docstring

parse-optsclj/s

(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]]
sourceraw docstring

parse-opts*clj/s

(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`.
sourceraw docstring

spec->optsclj/s

(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.
sourceraw docstring

validate-optsclj/s

(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`.
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close