+++ /dev/null
-; Common utility functions used by scripts
-; Unlike the functions in utils.clj, these are not directly useful
-
-(ns lib
- (:require [babashka.process :as p]
- [org.httpkit.client :as http]
- [clojure.java.io :as io]
- [clojure.string :as str])
- (: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 "~")
- (str/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.
-
- Examples:
-
- # Multiple arguments
- $ install-deb url1 url2 url3
-
- # Read from file with one url on each line
- $ install-deb `cat urls.txt`
-
- # Piping from another process
- $ ls | install-deb # Note: install-deb doesn't work with ls
- "
- [f]
- (when (= *file* (System/getProperty "babashka.file"))
- (if (> (.available System/in) 0)
- (->> (slurp *in*)
- (str/split-lines)
- (filter seq)
- (run! f))
- (->> (vec *command-line-args*)
- (map #(str/split % #" "))
- (flatten)
- (run! f)))))