Skip to content

Commit f4c7738

Browse files
authored
Merge pull request #12 from clojure-lsp/fix-downloaded-version
Fix downloaded version
2 parents afc8f96 + bdd368d commit f4c7738

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Unreleased
44

5+
- Fix cached downloaded binary to check if downloaded version matches the current version in plugin.
6+
57
## 2.0.0
68

79
- Fix --settings flag

src/leiningen/clojure_lsp/binary.clj

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
(clojure.java.io/copy stream dest-file))
4848
(recur (.getNextEntry stream))))))
4949

50-
(defn ^:private download! [^File download-path version]
50+
(defn ^:private download! [^File download-path ^File server-version-path version]
5151
(let [platform (os-name)
5252
arch (os-arch)
5353
artifact-name (get-in artifacts [platform arch])
@@ -57,14 +57,18 @@
5757
(doto download-path
5858
(.setWritable true)
5959
(.setReadable true)
60-
(.setExecutable true))))
60+
(.setExecutable true))
61+
(spit server-version-path version)))
6162

6263
(defn ^:private server-version []
6364
(string/trim (slurp (io/resource "CLOJURE_LSP_VERSION"))))
6465

6566
(defn ^:private server-path ^File []
6667
(io/file (global-cache-dir) "clojure-lsp"))
6768

69+
(defn ^:private server-version-path ^File []
70+
(io/file (global-cache-dir) "version.txt"))
71+
6872
(defn ^:private run-lsp! [^File path args]
6973
(let [p (process/process {:cmd (concat [(.getAbsolutePath path)] args)})]
7074
(future
@@ -82,14 +86,19 @@
8286
(recur))))))
8387
@p))
8488

89+
(defn ^:private download-server? [server-path server-version-path version]
90+
(or (not (.exists server-path))
91+
(not= (slurp server-version-path) version)))
92+
8593
(defn run! [args]
8694
(let [server-path (server-path)
95+
server-version-path (server-version-path)
8796
server-version (server-version)]
88-
(when-not (.exists server-path)
97+
(when (download-server? server-path server-version-path server-version)
8998
(binding [*out* *err*]
9099
(println "Downloading and caching clojure-lsp to" (str server-path)))
91100
(let [t (System/currentTimeMillis)]
92-
(download! server-path server-version)
101+
(download! server-path server-version-path server-version)
93102
(binding [*out* *err*]
94103
(println (format "Downloaded clojure-lsp took %sms" (- (System/currentTimeMillis) t))))))
95104
(run-lsp! server-path args)))

0 commit comments

Comments
 (0)