Skip to content

Latest commit

 

History

History
126 lines (87 loc) · 3.63 KB

API.md

File metadata and controls

126 lines (87 loc) · 3.63 KB

Table of contents

babashka.cli

coerce

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

dispatch

(dispatch table args)
(dispatch table args opts)

Subcommand dispatcher.

Dispatches on first matching command entry in table. A match is determines by whether :cmds, a vector of strings, is a subsequence (matching from the start) of the invoked commands.

Table is in the form:

[{:cmds ["sub_1" .. "sub_n"] :fn f :cmds-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
  • :rest-cmds - any remaining cmds

Any trailing commands can be matched as options using :cmds-opts.

This function does not throw. Use an empty :cmds vector to always match.

Examples: see README.md.
source

parse-args

(parse-args args)
(parse-args args opts)

Same as parse-opts but separates parsed opts into :opts and adds :cmds and :rest-args on the top level instead of metadata.
source

parse-opts

(parse-opts args)
(parse-opts args opts)

Parse the command line arguments args, a seq of strings. Expected format: ["cmd_1" ... "cmd_n" ":k_1" "v_1" .. ":k_n" "v_n"]. Instead of a leading : either -- or - may be used as well.

Return value: a map with parsed opts. Additional data such as initial subcommands and remaining args after -- are available under the :org.babashka/cli key in the metadata.

Supported options:

  • :coerce: a map of keys to coercion functions that will be applied to parsed :opts. See coerce-vals.
  • :aliases: a map of short names to long names.

Examples:

(parse-opts ["foo" ":bar" "1])
;; => {:bar "1", :org.babashka/cli {:cmds ["foo"]}}
(parse-args [":b" "1] {:aliases {:b :bar} :coerce {:bar parse-long}})
;; => {:bar 1}


source

babashka.cli.exec

-main

(-main & args)

Main entrypoint for command line usage. Expects a namespace and var name followed by zero or more key value pair arguments that will be parsed and passed to the var. If the first argument is map-shaped, it is read as an EDN map containing parse instructions.

Example when used as a clojure CLI alias:

clojure -M:exec clojure.core prn :a 1 :b 2
;;=> {:a "1" :b "2"}


source