When an input is numeric, you can use Clojure's parse-long
function to parse a number; it returns nil if
the string is not a number. You can then check using some?
within :validate:
(defcommand kill-port
"Kills the listening process locking a port."
[force ["-f" "--force" "Kill process without asking for confirmation"]
:args
port ["PORT" "Port number to kill"
:parse-fn parse-long
:validate [some? "Not a number"
pos? "Must be at least 1"]]]
...)
This handles invalid input gracefully:
> flow kill-port abc
Error in flow kill-port: PORT: Not a number
You might be tempted to use #(Long/parseLong %)
as the parse function; this works, but the message produced comes from
the message of the thrown exception, and is not very friendly:
> flow kill-port abc
Error in flow kill-port: PORT: Error in PORT: For input string: "abc"
You can add the namespace net.lewisship.cli-tools.colors
to add a colors
command.
This is a useful way to preview all the basic colors available.
Can you improve this documentation?Edit on GitHub
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 |