Skip to content

Commit 45ac94d

Browse files
RamblurrJeremS
authored andcommitted
DRY up the build scripts and add additional pom.xml metadata
1. The build scripts are all the same, except for their specific values stored in deps.edn. This commit removes the duplication that comes from having 5 separate scripts that are all the same. 2. While I was at it I added additional pom.xml metadata: - description (so it will show up on clojars and improve searchability) - other minor metadata: scm, perma links
1 parent 844f379 commit 45ac94d

12 files changed

Lines changed: 90 additions & 258 deletions

File tree

build_stub.clj

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
(require
2+
'[clojure.string :as str]
3+
'[clojure.tools.build.api :as b]
4+
'[clojure.edn :as edn])
5+
6+
(def root-project (-> (edn/read-string (slurp "../deps.edn"))
7+
:aliases :neil :project))
8+
(def repo-url-prefix (:url root-project))
9+
(def scm (:scm root-project))
10+
(def project (-> (edn/read-string (slurp "deps.edn"))
11+
:aliases :neil :project))
12+
(def cwd (-> (java.io.File. ".") .getCanonicalFile .getName))
13+
(def rev (str/trim (b/git-process {:git-args "rev-parse HEAD"})))
14+
(def lib (:name project))
15+
(def version (:version project))
16+
(def description (:description project))
17+
(assert lib ":name must be set in deps.edn under the :neil alias")
18+
(assert version ":version must be set in deps.edn under the :neil alias")
19+
(assert description ":description must be set in deps.edn under the :neil alias")
20+
21+
(def class-dir "target/classes")
22+
(def basis (b/create-basis {:project "deps.edn"}))
23+
(def jar-file (format "target/%s-%s.jar" (name lib) version))
24+
25+
(defn clean [_]
26+
(b/delete {:path "target"}))
27+
28+
(defn permalink [subpath]
29+
(str repo-url-prefix "/blob/" rev "/" subpath))
30+
31+
(defn jar [_]
32+
33+
(b/write-pom {:class-dir class-dir
34+
:lib lib
35+
:version version
36+
:basis basis
37+
:src-dirs ["src/main" "resources"]
38+
:pom-data [[:description description]
39+
[:url (permalink cwd)]
40+
[:licenses
41+
[:license
42+
[:name "The MIT License"]
43+
[:url (permalink "LICENSE.md")]]]
44+
(conj scm [:tag (str "v" version)])]})
45+
(b/copy-dir {:src-dirs ["src/main"]
46+
:target-dir class-dir})
47+
(b/jar {:class-dir class-dir
48+
:jar-file jar-file}))
49+
50+
(defn install [_]
51+
(jar {})
52+
(b/install {:basis basis
53+
:lib lib
54+
:version version
55+
:jar-file jar-file
56+
:class-dir class-dir}))
57+
58+
(defn deploy [opts]
59+
(jar opts)
60+
((requiring-resolve 'deps-deploy.deps-deploy/deploy)
61+
(merge {:installer :remote
62+
:artifact jar-file
63+
:pom-file (b/pom-path {:lib lib :class-dir class-dir})}
64+
opts))
65+
opts)

deps.edn

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,9 @@
6767
:test.paths/adapter-ring ["src/test/adapter-ring"]
6868
:test.paths/adapter-ring-jetty ["src/test/adapter-ring-jetty"]
6969
:test.paths/adapter-rj9a ["src/test/adapter-rj9a"]
70-
:test.paths/adapter-http-kit ["src/test/adapter-http-kit"]}}
71-
70+
:test.paths/adapter-http-kit ["src/test/adapter-http-kit"]
71+
:neil {:project {:url "https://github.com/starfederation/datastar-clojure"
72+
:scm [:scm
73+
[:url "https://github.com/"]
74+
[:connection "scm:git:https://github.com/starfederation/datastar-clojure.git"]
75+
[:developerConnection "scm:git:ssh:git@github.com:starfederation/datastar-clojure.git"]]}}}}

sdk-adapter-http-kit/build.clj

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,2 @@
1-
(ns build
2-
(:require [clojure.tools.build.api :as b]
3-
[clojure.edn :as edn]))
4-
5-
(def project (-> (edn/read-string (slurp "deps.edn"))
6-
:aliases :neil :project))
7-
(def lib (:name project))
8-
(def version (:version project))
9-
(assert lib ":name must be set in deps.edn under the :neil alias")
10-
(assert version ":version must be set in deps.edn under the :neil alias")
11-
12-
(def class-dir "target/classes")
13-
(def basis (b/create-basis {:project "deps.edn"}))
14-
(def jar-file (format "target/%s-%s.jar" (name lib) version))
15-
16-
(defn clean [_]
17-
(b/delete {:path "target"}))
18-
19-
(defn jar [_]
20-
(b/write-pom {:class-dir class-dir
21-
:lib lib
22-
:version version
23-
:basis basis
24-
:src-dirs ["src/main"]
25-
:pom-data [[:licenses
26-
[:license
27-
[:name "The MIT License"]
28-
[:url "https://github.com/starfederation/datastar-clojure/blob/main/LICENSE.md"]]]]})
29-
(b/copy-dir {:src-dirs ["src/main"]
30-
:target-dir class-dir})
31-
(b/jar {:class-dir class-dir
32-
:jar-file jar-file}))
33-
34-
(defn install [_]
35-
(jar {})
36-
(b/install {:basis basis
37-
:lib lib
38-
:version version
39-
:jar-file jar-file
40-
:class-dir class-dir}))
41-
42-
(defn deploy [opts]
43-
(jar opts)
44-
((requiring-resolve 'deps-deploy.deps-deploy/deploy)
45-
(merge {:installer :remote
46-
:artifact jar-file
47-
:pom-file (b/pom-path {:lib lib :class-dir class-dir})}
48-
opts))
49-
opts)
1+
(ns build)
2+
(load-file "../build_stub.clj")

sdk-adapter-http-kit/deps.edn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
slipset/deps-deploy {:mvn/version "0.2.2"}}
77
:ns-default build}
88
:neil {:project {:name dev.data-star.clojure/http-kit
9-
:version "1.0.0-RC1"}}}}
9+
:version "1.0.0-RC1"
10+
:description "http-kit adapter for the Datastar SDK"}}}}

sdk-adapter-ring/build.clj

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,2 @@
1-
(ns build
2-
(:require [clojure.tools.build.api :as b]
3-
[clojure.edn :as edn]))
4-
5-
(def project (-> (edn/read-string (slurp "deps.edn"))
6-
:aliases :neil :project))
7-
(def lib (:name project))
8-
(def version (:version project))
9-
(assert lib ":name must be set in deps.edn under the :neil alias")
10-
(assert version ":version must be set in deps.edn under the :neil alias")
11-
12-
(def class-dir "target/classes")
13-
(def basis (b/create-basis {:project "deps.edn"}))
14-
(def jar-file (format "target/%s-%s.jar" (name lib) version))
15-
16-
(defn clean [_]
17-
(b/delete {:path "target"}))
18-
19-
(defn jar [_]
20-
(b/write-pom {:class-dir class-dir
21-
:lib lib
22-
:version version
23-
:basis basis
24-
:src-dirs ["src/main"]
25-
:pom-data [[:licenses
26-
[:license
27-
[:name "The MIT License"]
28-
[:url "https://github.com/starfederation/datastar-clojure/blob/main/LICENSE.md"]]]]})
29-
(b/copy-dir {:src-dirs ["src/main"]
30-
:target-dir class-dir})
31-
(b/jar {:class-dir class-dir
32-
:jar-file jar-file}))
33-
34-
(defn install [_]
35-
(jar {})
36-
(b/install {:basis basis
37-
:lib lib
38-
:version version
39-
:jar-file jar-file
40-
:class-dir class-dir}))
41-
42-
(defn deploy [opts]
43-
(jar opts)
44-
((requiring-resolve 'deps-deploy.deps-deploy/deploy)
45-
(merge {:installer :remote
46-
:artifact jar-file
47-
:pom-file (b/pom-path {:lib lib :class-dir class-dir})}
48-
opts))
49-
opts)
1+
(ns build)
2+
(load-file "../build_stub.clj")

sdk-adapter-ring/deps.edn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
slipset/deps-deploy {:mvn/version "0.2.2"}}
66
:ns-default build}
77
:neil {:project {:name dev.data-star.clojure/ring
8-
:version "1.0.0-RC1"}}}}
8+
:version "1.0.0-RC1"
9+
:description "Ring adapter for the Datastar SDK"}}}}

sdk-brotli/build.clj

Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,2 @@
1-
(ns build
2-
(:require [clojure.tools.build.api :as b]
3-
[clojure.edn :as edn]))
4-
5-
(def project (-> (edn/read-string (slurp "deps.edn"))
6-
:aliases :neil :project))
7-
(def lib (:name project))
8-
(def version (:version project))
9-
(assert lib ":name must be set in deps.edn under the :neil alias")
10-
(assert version ":version must be set in deps.edn under the :neil alias")
11-
12-
(def class-dir "target/classes")
13-
(def basis (b/create-basis {:project "deps.edn"}))
14-
(def uber-file (format "target/%s-%s-standalone.jar" (name lib) version))
15-
(def jar-file (format "target/%s-%s.jar" (name lib) version))
16-
17-
(defn clean [_]
18-
(b/delete {:path "target"}))
19-
20-
(defn jar [_]
21-
(b/write-pom {:class-dir class-dir
22-
:lib lib
23-
:version version
24-
:basis basis
25-
:src-dirs ["src/main"]
26-
:pom-data [[:licenses
27-
[:license
28-
[:name "The MIT License"]
29-
[:url "https://github.com/starfederation/datastar-clojure/blob/main/LICENSE.md"]]]]})
30-
(b/copy-dir {:src-dirs ["src/main"]
31-
:target-dir class-dir})
32-
(b/jar {:class-dir class-dir
33-
:jar-file jar-file}))
34-
35-
(defn install [_]
36-
(jar {})
37-
(b/install {:basis basis
38-
:lib lib
39-
:version version
40-
:jar-file jar-file
41-
:class-dir class-dir}))
42-
43-
44-
(defn deploy [opts]
45-
(jar opts)
46-
((requiring-resolve 'deps-deploy.deps-deploy/deploy)
47-
(merge {:installer :remote
48-
:artifact jar-file
49-
:pom-file (b/pom-path {:lib lib :class-dir class-dir})}
50-
opts))
51-
opts)
52-
1+
(ns build)
2+
(load-file "../build_stub.clj")

sdk-brotli/deps.edn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
slipset/deps-deploy {:mvn/version "0.2.2"}}
77
:ns-default build}
88
:neil {:project {:name dev.data-star.clojure/brotli
9+
:description "Brotli compression helpers for the Datastar SDK"
910
:version "1.0.0-RC1"}}}}

sdk-malli-schemas/build.clj

Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,2 @@
1-
(ns build
2-
(:require [clojure.tools.build.api :as b]
3-
[clojure.edn :as edn]))
4-
5-
(def project (-> (edn/read-string (slurp "deps.edn"))
6-
:aliases :neil :project))
7-
(def lib (:name project))
8-
(def version (:version project))
9-
(assert lib ":name must be set in deps.edn under the :neil alias")
10-
(assert version ":version must be set in deps.edn under the :neil alias")
11-
12-
(def class-dir "target/classes")
13-
(def basis (b/create-basis {:project "deps.edn"}))
14-
(def uber-file (format "target/%s-%s-standalone.jar" (name lib) version))
15-
(def jar-file (format "target/%s-%s.jar" (name lib) version))
16-
17-
(defn clean [_]
18-
(b/delete {:path "target"}))
19-
20-
(defn jar [_]
21-
(b/write-pom {:class-dir class-dir
22-
:lib lib
23-
:version version
24-
:basis basis
25-
:src-dirs ["src/main"]
26-
:pom-data [[:licenses
27-
[:license
28-
[:name "The MIT License"]
29-
[:url "https://github.com/starfederation/datastar-clojure/blob/main/LICENSE.md"]]]]})
30-
(b/copy-dir {:src-dirs ["src/main"]
31-
:target-dir class-dir})
32-
(b/jar {:class-dir class-dir
33-
:jar-file jar-file}))
34-
35-
(defn install [_]
36-
(jar {})
37-
(b/install {:basis basis
38-
:lib lib
39-
:version version
40-
:jar-file jar-file
41-
:class-dir class-dir}))
42-
43-
44-
(defn deploy [opts]
45-
(jar opts)
46-
((requiring-resolve 'deps-deploy.deps-deploy/deploy)
47-
(merge {:installer :remote
48-
:artifact jar-file
49-
:pom-file (b/pom-path {:lib lib :class-dir class-dir})}
50-
opts))
51-
opts)
52-
1+
(ns build)
2+
(load-file "../build_stub.clj")

sdk-malli-schemas/deps.edn

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
slipset/deps-deploy {:mvn/version "0.2.2"}}
66
:ns-default build}
77
:neil {:project {:name dev.data-star.clojure/malli-schemas
8-
:version "1.0.0-RC1"}}}}
8+
:version "1.0.0-RC1"
9+
:description "Malli schemas for the Datastar SDK"}}}}

0 commit comments

Comments
 (0)