-
-
Notifications
You must be signed in to change notification settings - Fork 39
Open
Description
A basic template for creating a Clojure CLI command tool.
(ns practicalli.tool-name
(:gen-class)
(:require [clojure.tools.cli :as cli]))
(def VERSION "0.0.1")
(def cli-opts
[["-v" "--verbose" "Increase verbosity" :default 0 :update-fn inc]
[nil "--version" "Print version and exit"]
["-h" "--help" "Print this help information"]])
(defn exec-tool [args {:keys [] :as opts}]
;; main functionality goes here, you get a seq of positional arguments, and a
;; map of options.
)
(defn -main [& args]
(let [{:keys [errors options arguments summary]} (cli/parse-opts args cli-opts)]
(cond
(seq errors)
(do
(run! println errors)
(println summary)
(System/exit -1)) ;; non-zero exit code if something goes wrong
(:help options)
(do
(println summary)
(System/exit 0))
(:version options)
(do
(println VERSION)
(System/exit 0))
:else
(main arguments options))))Metadata
Metadata
Assignees
Labels
No labels