; Common utility functions used by scripts (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] (->> command p/process :out slurp)) (defn extract-file-from-zip [zip-file-name source destination] (let [zip-file (io/file zip-file-name) dest (io/file destination) fs (FileSystems/newFileSystem (.toPath zip-file) nil) file-in-zip (.getPath fs source (into-array String []))] (Files/copy file-in-zip (.toPath dest) (into-array CopyOption [StandardCopyOption/REPLACE_EXISTING])))) (defn expand-home [s] (if (.startsWith s "~") (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)))))