Clojure implementation of the docopt description language.
Forked from @signalpillar's fork of docopt, originally by @postamar.
In order to add docopt.clj
to the classpath, you can either
Use an environment variable
cd babashka
export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {dev.nubank/docopt {:mvn/version "0.6.1-fix4"}}}')
./naval_fate_env.clj
Dynamically include it with (require '[babashka.classpath :refer [add-classpath])
cd babashka
./naval_fate_dynamic.clj
babashka/common.clj
contains an example of how to call docopt's entrypoint function.
In both cases, the output should be
$ ./naval_fate_env.clj ship Unicorn move $'20°37\'42.0"N' $'70°52\'25.0"W'
{"--drifting" false,
"--help" false,
"--moored" false,
"--speed" "10",
"--version" false,
"<lat>" "20°37'42.0\"N",
"<long>" "70°52'25.0\"W",
"<name>" "Unicorn",
"mine" false,
"move" true,
"new" false,
"remove" false,
"set" false,
"ship" true}
Save the following script as test-script
and make it executable with chmod +x
:
#!/bin/sh
#_(
DEPS='
{:deps {dev.nubank/docopt {:mvn/version "0.6.1-fix4"}}}
'
OPTS='
-J-Xms256m -J-Xmx256m
-J-client
-J-Dclojure.spec.skip-macros=true
'
exec clojure $OPTS -Sdeps "$DEPS" -i "$0" -m docopt.example "$@"
)
(ns docopt.example
(:require [docopt.core :as docopt]))
(def usage "Test application.
Usage: test-script [options]
Options:
--an-arg <something> An argument")
(defn -main [& args]
(docopt/docopt usage args
(fn [arg-map]
(println arg-map)
(println (arg-map "--an-arg")))))
$ chmod +x test-script
$ ./test-script --an-arg test
{--an-arg test}
test
$ ./test-script # displays the help text
Test application.
Usage: testapp [options]
Options:
--an-arg <something> An argument
Run lein test
to validate all tests.
The tests are automatically downloaded from the language-agnostic
testcases.docopt
file in the reference implementation, master branch commit
511d1c57b5.
Please feel free to (re)open an issue in case this implementation falls behind.
Can you improve this documentation? These fine people already did:
Marius Posta, Felipe Cortez, Thiago Kenji Okada (Nubank) & Thiago Kenji OkadaEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close