+++ /dev/null
-#! /usr/bin/env bb
-
-(require '[cheshire.core :as json]
- '[org.httpkit.client :as http]
- '[babashka.fs :as fs]
- '[clojure.java.io :as io]
- '[lib :refer [download-binary expand-home run-cmd]])
-
-(defn babashka-latest-version
- []
- (-> @(http/get "https://api.github.com/repos/babashka/babashka/tags")
- :body
- (json/parse-string true)
- first
- :name
- (subs 1)))
-
-(defn get-download-url
- [version architecture]
- (str "https://github.com/babashka/babashka/releases/download/v"
- version
- "/babashka-"
- version
- "-"
- architecture
- ".tar.gz"))
-
-(defn check-latest
- [version]
- (when (= (System/getProperty "babashka.version") version)
- (println "Already using the latest version.")
- (System/exit 0)))
-
-(defn download-latest
- [version architecture output]
- (let [url (get-download-url version architecture)]
- (download-binary url output)))
-
-(defn update-babashka
- []
- (let [architecture "linux-amd64" ;; TODO support other architectures
- tarball "babashka.tar.gz"
- destination (expand-home "~/bin")
- version (babashka-latest-version)]
- (println (str "Latest version is " version))
- (check-latest version)
- (println "Updating...")
- (download-latest version architecture tarball)
- (run-cmd ["tar" "-xzf" tarball "--directory" destination])
- (fs/set-posix-file-permissions (str destination "/bb") "rwxr-xr-x")
- (io/delete-file tarball)
- (println "Done!")))
-
-(when (= *file* (System/getProperty "babashka.file")) (update-babashka))