Also, corrected the mistake of downloading the linux-static binary
by default.
Signed-off-by: Joseph Nuthalapati <njoseph@riseup.net>
(import '[java.nio.file Files FileSystems CopyOption StandardCopyOption])
(import '[java.nio.file Files FileSystems CopyOption StandardCopyOption])
+(require '[org.httpkit.client :as http])
+
(defn extract-file-from-zip
[zip-file-name source destination]
(let [zip-file (io/file zip-file-name)
(defn extract-file-from-zip
[zip-file-name source destination]
(let [zip-file (io/file zip-file-name)
(if (.startsWith s "~")
(clojure.string/replace-first s "~" (System/getProperty "user.home"))
s))
(if (.startsWith s "~")
(clojure.string/replace-first s "~" (System/getProperty "user.home"))
s))
+
+(defn download-binary
+ [url destination]
+ (io/copy (:body @(http/get url)) (io/file destination)))
(require '[clojure.java.shell :refer [sh]]
'[cheshire.core :as json]
(require '[clojure.java.shell :refer [sh]]
'[cheshire.core :as json]
- '[babashka.curl :as curl]
+ '[org.httpkit.client :as http]
'[babashka.fs :as fs])
(defn babashka-latest-version
[]
'[babashka.fs :as fs])
(defn babashka-latest-version
[]
- (-> (curl/get "https://api.github.com/repos/babashka/babashka/tags")
+ (-> @(http/get "https://api.github.com/repos/babashka/babashka/tags")
:body
(json/parse-string true)
first
:name
(subs 1)))
:body
(json/parse-string true)
first
:name
(subs 1)))
-(defn download-binary
- [url destination]
- (io/copy (:body (curl/get url {:as :stream})) (io/file destination)))
-
(defn get-download-url
[version architecture]
(str "https://github.com/babashka/babashka/releases/download/v"
(defn get-download-url
[version architecture]
(str "https://github.com/babashka/babashka/releases/download/v"
(defn download-latest
[version architecture output]
(let [url (get-download-url version architecture)]
(defn download-latest
[version architecture output]
(let [url (get-download-url version architecture)]
- (println (str "Latest version is " version))
(download-binary url output)))
(when (= *file* (System/getProperty "babashka.file"))
(download-binary url output)))
(when (= *file* (System/getProperty "babashka.file"))
- (let [architecture "linux-static-amd64" ;; TODO support multiple
+ (let [architecture "linux-amd64" ;; TODO support multiple
;; architectures
zip-file "babashka.zip"
destination (expand-home "~/bin/bb")
version (babashka-latest-version)]
;; architectures
zip-file "babashka.zip"
destination (expand-home "~/bin/bb")
version (babashka-latest-version)]
+ (println (str "Latest version is " version))
+ (println "Updating...")
(download-latest version architecture zip-file)
(extract-file-from-zip zip-file "bb" destination)
(fs/set-posix-file-permissions destination "rwxr-xr-x")
(download-latest version architecture zip-file)
(extract-file-from-zip zip-file "bb" destination)
(fs/set-posix-file-permissions destination "rwxr-xr-x")
- (io/delete-file zip-file)))
+ (io/delete-file zip-file)
+ (println "Done!")))