-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathbuild.clj
75 lines (67 loc) · 1.94 KB
/
build.clj
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
68
69
70
71
72
73
74
75
(ns build
(:refer-clojure :exclude [test])
(:require [clojure.tools.build.api :as b]
[clojure.tools.build.tasks.process :as p]
[deps-deploy.deps-deploy :as dd]))
(def lib 'exoscale/reporter)
(def version (format "1.0.%s" (b/git-count-revs nil)))
(def class-dir "target/classes")
(def copy-srcs ["src"])
(def target-dir "target")
(def jar-file (format "%s/%s-%s.jar" target-dir (name lib) version))
(def basis (delay (b/create-basis {:project "deps.edn"})))
(defn clean
[opts]
(b/delete {:path target-dir})
opts)
(defn jar
[opts]
(b/write-pom {:class-dir class-dir
:lib lib
:version version
:basis @basis
:src-dirs ["src"]
:pom-data
[[:licenses
[:license
[:name "MIT"]
[:url "https://opensource.org/license/mit/"]
[:distribution "repo"]]
[:license
[:name "ISC"]
[:url "https://opensource.org/license/isc-license-txt/"]
[:distribution "repo"]]]]})
(b/copy-dir {:src-dirs copy-srcs
:target-dir class-dir})
(b/jar {:class-dir class-dir
:jar-file jar-file})
opts)
(defn deploy
[opts]
(dd/deploy {:artifact jar-file
:pom-file (format "%s/classes/META-INF/maven/%s/pom.xml"
target-dir
lib)
:installer :remote
:sign-releases? false
:repository "clojars"})
opts)
(defn- sh
[& cmds]
(doseq [cmd cmds]
(p/process {:command-args ["sh" "-c" cmd]})))
(defn tag
[opts]
(sh
(format "git tag -a \"%s\" --no-sign -m \"Release %s\"" version version)
"git pull"
"git push --follow-tags")
opts)
#_{:clj-kondo/ignore [:clojure-lsp/unused-public-var]}
(defn release
[opts]
(-> opts
clean
jar
deploy
tag))