]> njoseph.me Git - babashka-scripts.git/blobdiff - lib.clj
utils: Add run-seq
[babashka-scripts.git] / lib.clj
diff --git a/lib.clj b/lib.clj
index 70fef53590648bb52015649d4ad872c4bc326737..fb67137a1fb0045a221222a63431e74c99c2fe88 100644 (file)
--- a/lib.clj
+++ b/lib.clj
@@ -1,8 +1,11 @@
 ; Common utility functions used by scripts
 
-(import '[java.nio.file Files FileSystems CopyOption StandardCopyOption])
-
-(require '[babashka.process :as p] '[org.httpkit.client :as http])
+(ns lib
+  (:require [babashka.process :as p]
+            [org.httpkit.client :as http]
+            [clojure.java.io :as io]
+            [clojure.string :refer [replace-first split-lines]])
+  (:import [java.nio.file Files FileSystems CopyOption StandardCopyOption]))
 
 (defn run-cmd
   [command]
@@ -14,7 +17,6 @@
 (defn extract-file-from-zip
   [zip-file-name source destination]
   (let [zip-file (io/file zip-file-name)
-        src (io/file source)
         dest (io/file destination)
         fs (FileSystems/newFileSystem (.toPath zip-file) nil)
         file-in-zip (.getPath fs source (into-array String []))]
 (defn expand-home
   [s]
   (if (.startsWith s "~")
-    (clojure.string/replace-first s "~" (System/getProperty "user.home"))
+    (replace-first s "~" (System/getProperty "user.home"))
     s))
 
 (defn download-binary
   [url destination]
   (io/copy (:body @(http/get url)) (io/file destination)))
+
+(defn unixify
+  "Make a function `f` behave like a UNIX shell command."
+  [f]
+  (when (= *file* (System/getProperty "babashka.file"))
+    (let [content (if (> (.available System/in) 0)
+                    (slurp *in*)
+                    (first *command-line-args*))]
+      (doseq [arg (filter #(not= "" %) (split-lines content))]
+        (f arg)))))