X-Git-Url: https://njoseph.me/gitweb/babashka-scripts.git/blobdiff_plain/fbc0885061f2ce47b5a21b5d4a5d99640d6f0e21..30bd2f34f3d22bdd4314d4bd3384fa3d6dbd5ca5:/lib.clj diff --git a/lib.clj b/lib.clj index 70fef53..16c9059 100644 --- 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 []))] @@ -25,9 +27,21 @@ (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*))] + (->> content + (split-lines) + (filter seq) + (run! f)))))