-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbb.edn
More file actions
67 lines (56 loc) · 4.01 KB
/
Copy pathbb.edn
File metadata and controls
67 lines (56 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{:paths ["script"]
:deps {borkdude/gh-release-artifact
{:git/url "https://github.com/borkdude/gh-release-artifact"
:sha "a83ee8da47d56a80b6380cbb6b4b9274048067bd"}}
:tasks {:requires ([babashka.fs :as fs])
:init (do (defn print-public-task [k]
(let [{:keys [:private :name]} (current-task)]
(when-not private
(println (case k :enter "☐" "✓") name))))
(def version "0.0.3"))
:enter (print-public-task :enter)
:leave (print-public-task :leave)
clean {:doc "Cleans artifacts"
:task (fs/delete-tree "server/target")}
java1.8 {:doc "Asserts that we are using java 1.8"
:requires ([clojure.java.shell :refer [sh]]
[clojure.string :as str])
:task (let [java-version (:err (sh "java" "-version"))]
(assert (str/includes? java-version "1.8.0") "Must use Java 1.8.0"))}
server:test {:doc "Run tests"
:task (clojure {:dir "server"} "-M:test")}
uberjar {:task (str (fs/path "target" (str "zen-lsp-server-" version "-standalone.jar")))}
server:build {:doc "Produces lsp server standalone jar"
:depends [java1.8 uberjar]
:task (let [jar (fs/file "server" uberjar)]
(when (seq (fs/modified-since jar
["server/deps.edn" "server/src"]))
(clojure {:dir "server"} "-T:build uber" ":uber-file" (pr-str uberjar)))
(str jar))}
vscode-server {:doc "Copies lsp server jar to vscode extension"
:depends [uberjar server:build]
:task (let [jar (fs/path "vscode-extension" "zen-lsp-server-standalone.jar")]
(fs/copy (fs/file "server" uberjar)
jar
{:replace-existing true})
(str jar))}
vscode-version {:doc "Prepares package.json with up to date zen-lsp version"
:task (binding [*command-line-args* [version]]
(load-file "script/update-package-json.clj"))}
vscode-package {:doc "Builds vscode package"
:depends [vscode-server vscode-version]
:task (do
(shell {:dir "vscode-extension"} "npm install")
(shell {:dir "vscode-extension"} "npx vsce package")
(str (fs/file "vscode-extension"
(format "zen-lsp-%s.vsix" version))))}
upload-assets {:doc "Uploads jar and vsix to Github"
:depends [server:build vscode-server vscode-version vscode-package]
:requires ([upload-release :as ur])
:task (do (ur/release server:build version)
(ur/release vscode-package version))}
vscode-publish {:doc "Publishes vscode extension to marketplace"
:depends [vscode-package]
:task (shell {:dir "vscode-extension"} "npx vsce publish")}
publish {:doc "The mother of all tasks: publishes everything needed for new release"
:depends [upload-assets vscode-publish]}}}