Open practicalli-johnny opened 1 year ago
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))))
A basic template for creating a Clojure CLI command tool.