X-Git-Url: https://njoseph.me/gitweb/babashka-scripts.git/blobdiff_plain/746d64040956017457d38f0bf59649e96d0ab449..ec37ad05d576d79b3dc2d05b2bcae632a93e8c35:/utils.clj diff --git a/utils.clj b/utils.clj deleted file mode 100644 index a19a9aa..0000000 --- a/utils.clj +++ /dev/null @@ -1,72 +0,0 @@ -(ns utils - (:require [clojure.string :as str] - [clojure.java.io :as io] - [cheshire.core :as json] - [org.httpkit.client :as http] - [lib :refer [download-binary run-cmd]])) - -(defn git-pull-rebase-branch - "Do git pull and rebase branch with master" - [] - (let [current-branch (str/trim (run-cmd ["git" "branch" "--show-current"]))] - (print (run-cmd ["git" "pull" "--rebase"])) - (when (not (contains? #{"master" "main"} current-branch)) - (run! print - (map run-cmd - '[["git" "checkout" "master"] ["git" "pull" "--rebase"] - ["git" "checkout" "-"] ["git" "rebase" "master"]]))))) - -(defn run-seq - "Run a sequence of shell commands on a sequence of arguments. - - Examples: - - 1. Play and delete each video from a folder - ls | bb -i '(run-seq [\"mpv\" \"rm\"] *input*)' - " - [commands arguments] - (doseq [argument arguments - command commands] - (println (run-cmd [command argument])))) - -(defn install-deb - "Install a Debian package given a direct URL to the .deb file." - [url] - (println "Downloading deb package...") - (download-binary url "package.deb") - (println "Installing...") - (println (run-cmd ["sudo" "apt" "install" "./package.deb"])) - (println "Cleaning up..") - (io/delete-file "package.deb") - (println "Done.")) - -(defn install-deb-from-GitHub - "Install a Debian package given a GitHub URL." - [url] - - (assert (.contains url "github.com")) - - (letfn [(extract-GitHub-author-project - ;; Extracts a string like author/project from URL. - [url] - (str/join "/" (subvec (str/split url #"/") 3))) - (make-api-url ;; just some string interpolation - [author-project] - (str "https://api.github.com/repos/" - author-project - "/releases/latest")) - (get-assets ;; Download list of assets from GitHub - [api-url] - (:assets (json/parse-string - (:body @(http/get api-url)) true))) - (find-url-to-deb ;; Find Debian package URL from assets - [assets] - (some #(if (str/ends-with? % "deb") %) - (map #(:browser_download_url %) assets)))] - - (let [author-project (extract-GitHub-author-project url) - api-url (make-api-url author-project) - assets (get-assets api-url) - deb-url (find-url-to-deb assets)] - ;; Download and install Debian package - (install-deb deb-url))))