Migrate to tools.cli
authorguns <self@sungpae.com>
Wed, 19 Feb 2014 03:23:33 +0000 (21:23 -0600)
committerguns <self@sungpae.com>
Wed, 19 Feb 2014 04:44:53 +0000 (22:44 -0600)
optparse-clj was merged into tools.cli for v0.3.0.

cljs.tools.cli does not build with current deps, so we update both
lein-cljsbuild and add an explicit CLJS dep (as recommended by
lein-cljsbuild).

Note that this new version of CLJS does not have cljs.core/format.

project.clj
src/cljx/frak.cljx
src/cljx/frak/cli.cljx

index bd21f8a3c83e6fcdddd337958d01557a3e74d250..6bf99e7b88cc68ea3d5e40c8b1f6d5d1b4639059 100644 (file)
@@ -5,8 +5,9 @@
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :jar-exclusions [#"(?:\.(?:cljx|sw[onp])|cli\.cljs?)"]
   :dependencies [[org.clojure/clojure "1.5.1"]
-                 [guns.cli/optparse "1.1.1"]]
-  :plugins [[lein-cljsbuild "0.3.2"]
+                 [org.clojure/clojurescript "0.0-2156"]
+                 [org.clojure/tools.cli "0.3.1"]]
+  :plugins [[lein-cljsbuild "1.0.2"]
             [com.keminglabs/cljx "0.3.0"]]
   :source-paths ["src/cljx"]
   :profiles {:dev {:dependencies [[criterium "0.4.1"]
index 8104f4fb923923242bb39f4ded1493b44285dc0d..8566a2300274e56fc10f992a75f649e265fdbb49 100644 (file)
        (str 
         (if (= 1 (count chars))
           (first chars)
-          (format "[%s]" (apply str chars)))
+          (str \[ (apply str chars) \]))
         (when optional? "?")))))
 
 (defn- render-trie-strategy [node]
index 606d66b2ad7e2e819d2029feecba779a8cf02c71..7011711f4b0651aaf53387d88625b3658a86022a 100644 (file)
@@ -1,7 +1,8 @@
 (ns frak.cli
   "Command line interface."
   (:require [clojure.string :as string]
-            [guns.cli.optparse :as o]
+            #+clj [clojure.tools.cli :refer [parse-opts]]
+            #+cljs [cljs.tools.cli :refer [parse-opts]]
             [frak]))
 
 ;;;; Utilities
 
 (def main-flags
   [["-e" "--exact" "Generated pattern requires an exact match"
-    :key :exact?]
+    :id :exact?]
    ["-c" "--capture" "Generated pattern captures"
-    :key :capture?]
+    :id :capture?]
    ["-h" "--help" "Display this help message"]])
 
 (defn -main
   "Passes arguments to frak/pattern"
   [& args]
-  (try
-    (let [[opts words summary] (o/parse args main-flags)]
-      (if (or (empty? words) (:help opts))
-        (log (str "Usage: frak <flags*> <strings+>\n\nFlags:\n" summary))
-        (log (frak/string-pattern words (select-keys opts [:exact? :capture?]))))
-      (exit 0))
-    (catch #+clj AssertionError #+cljs js/Error e
-      (log (#+clj .getMessage #+cljs .-message e))
-      (exit 1))))
+  (let [{:keys [options summary errors] words :arguments}
+        (parse-opts args main-flags)]
+    (when errors
+      (printerr (string/join "\n" errors))
+      (exit 1))
+    (if (or (empty? words) (:help options))
+      (log (str "Usage: frak <flags*> <strings+>\n\nFlags:\n" summary))
+      (log (frak/string-pattern words (select-keys options [:exact? :capture?]))))
+    (exit 0)))
 
 #+cljs (set! *main-cli-fn* -main)