-
Notifications
You must be signed in to change notification settings - Fork 54
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
new tools.build for versioning and building jars
- Loading branch information
Showing
15 changed files
with
203 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -73,3 +73,6 @@ jobs: | |
|
||
- name: Test | ||
run: bin/kaocha | ||
|
||
- name: Build Jars | ||
run: clojure -T:build jars |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
(ns build | ||
(:require [clojure.tools.build.api :as b] | ||
[clojure.edn :as edn] | ||
[borkdude.rewrite-edn :as rewrite-edn])) | ||
|
||
(def group "com.layerware") | ||
|
||
;; these match lib paths, deps.edn aliases; order matters! | ||
(def libs ["hugsql-adapter" | ||
"hugsql-adapter-clojure-java-jdbc" | ||
"hugsql-adapter-clojure-jdbc" | ||
"hugsql-adapter-next-jdbc" | ||
"hugsql-core" | ||
"hugsql"]) | ||
|
||
(defn- lib-symbol [lib] | ||
(symbol group lib)) | ||
|
||
(defn- deps-edn [] | ||
(->> (slurp "deps.edn") | ||
(edn/read-string))) | ||
|
||
(defn- lib-src [lib] | ||
(-> (deps-edn) | ||
(get-in [:aliases (keyword (format "%s-src" lib))]))) | ||
|
||
(defn- set-version-in-lib [lib version] | ||
;; update versions for all hugsql libs in each of the lib deps.edn files | ||
(let [deps-edn (format "%s/deps.edn" lib) | ||
nodes (->> deps-edn | ||
(slurp) | ||
(rewrite-edn/parse-string))] | ||
(->> libs | ||
(reduce (fn [nodes l] | ||
(if (rewrite-edn/sexpr (rewrite-edn/get-in nodes [:deps (lib-symbol l)])) | ||
(rewrite-edn/assoc-in nodes [:deps (lib-symbol l)] {:mvn/version version}) | ||
nodes)) | ||
nodes) | ||
(spit deps-edn)))) | ||
|
||
(defn- set-version-in-libs [version] | ||
(doseq [lib libs] | ||
(set-version-in-lib lib version))) | ||
|
||
(defn- get-version [] | ||
(-> (slurp "version.edn") | ||
(edn/read-string) | ||
(:version))) | ||
|
||
(defn- set-version [{:keys [version]}] | ||
(let [full-version (format "%s.%s" version (b/git-count-revs nil))] | ||
(->> full-version | ||
(hash-map :version) | ||
(pr-str) | ||
(spit "version.edn")) | ||
(set-version-in-libs full-version))) | ||
|
||
(defn version | ||
"Get or set the version." | ||
([] (version {})) | ||
([{:keys [version]}] | ||
(when version | ||
(set-version {:version version})) | ||
(println (get-version)))) | ||
|
||
|
||
(defn- class-dir [lib] | ||
(format "%s/target/classes" lib)) | ||
|
||
(defn- basis [lib] | ||
(b/create-basis {:project (format "%s/deps.edn" lib)})) | ||
|
||
(defn- jar-file [lib] | ||
(format "%s/target/%s-%s.jar" lib lib (get-version))) | ||
|
||
(defn- clean-lib [lib] | ||
(b/delete {:path (format "%s/target" lib)})) | ||
|
||
(defn clean [_] | ||
(doseq [lib libs] | ||
(clean-lib lib))) | ||
|
||
(defn- jar [lib] | ||
(b/write-pom {:class-dir (class-dir lib) | ||
:lib (lib-symbol lib) | ||
:version (get-version) | ||
:basis (basis lib) | ||
:src-dirs (lib-src lib)}) | ||
(b/copy-dir {:src-dirs (lib-src lib) | ||
:target-dir (class-dir lib)}) | ||
(b/jar {:class-dir (class-dir lib) | ||
:jar-file (jar-file lib)})) | ||
|
||
(defn- install-lib [lib] | ||
(b/install {:class-dir (class-dir lib) | ||
:lib (lib-symbol lib) | ||
:version (get-version) | ||
:basis (basis lib) | ||
:src-dirs (lib-src lib) | ||
:jar-file (jar-file lib)})) | ||
|
||
|
||
(defn jars | ||
"Build and install jars. | ||
Due to dependencies, each lib jars must be installed locally before building subsequent lib jars." | ||
[_] | ||
(doseq [lib libs] | ||
(jar lib) | ||
(install-lib lib))) | ||
|
||
(comment | ||
|
||
(get-version) | ||
(set-version {:version "1.0"}) | ||
(version) | ||
(version {:version "1.0"}) | ||
|
||
(clean {}) | ||
(jars {}) | ||
|
||
;; | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,66 +1,50 @@ | ||
{:aliases | ||
{:dev {:extra-paths [] | ||
:extra-deps {}} | ||
;; paths | ||
:path-core-src ["hugsql-core/src"] | ||
:path-adapter-src ["hugsql-adapter/src"] | ||
:path-adapter-clojure-java-jdbc-src ["hugsql-adapter-clojure-java-jdbc/src"] | ||
:path-adapter-clojure-jdbc-src ["hugsql-adapter-clojure-jdbc/src"] | ||
:path-adapter-next-jdbc-src ["hugsql-adapter-next-jdbc/src"] | ||
{:dev {:extra-paths [] | ||
:extra-deps {}} | ||
;; libraries | ||
:hugsql {:local/root "hugsql"} | ||
:hugsql-core {:local/root "hugsql-core"} | ||
:hugsql-adapter {:local/root "hugsql-adapter"} | ||
:hugsql-adapter-clojure-java-jdbc {:local/root "hugsql-adapter-clojure-java-jdbc"} | ||
:hugsql-adapter-clojure-jdbc {:local/root "hugsql-adapter-clojure-jdbc"} | ||
:hugsql-adapter-next-jdbc {:local/root "hugsql-adapter-next-jdbc"} | ||
|
||
:path-core-test ["hugsql-core/test"] | ||
:path-adapter-test ["hugsql-adapter/test"] | ||
:path-adapter-clojure-java-jdbc-test ["hugsql-adapter-clojure-java-jdbc/test"] | ||
:path-adapter-clojure-jdbc-test ["hugsql-adapter-clojure-jdbc/test"] | ||
:path-adapter-next-jdbc-test ["hugsql-adapter-next-jdbc/test"] | ||
;; paths (used below, in build.clj, and in tests.edn) | ||
:hugsql-core-src ["hugsql-core/src"] | ||
:hugsql-adapter-src ["hugsql-adapter/src"] | ||
:hugsql-adapter-clojure-java-jdbc-src ["hugsql-adapter-clojure-java-jdbc/src"] | ||
:hugsql-adapter-clojure-jdbc-src ["hugsql-adapter-clojure-jdbc/src"] | ||
:hugsql-adapter-next-jdbc-src ["hugsql-adapter-next-jdbc/src"] | ||
|
||
;; libraries | ||
:core {:extra-paths [:path-core-src] | ||
:extra-deps {}} | ||
:adapter {:extra-paths [:path-adapter-src] | ||
:extra-deps {}} | ||
:adapter-clojure-java-jdbc {:extra-paths [:path-adapter-clojure-java-jdbc-src] | ||
:extra-deps {org.clojure/java.jdbc {:mvn/version "0.7.12"}}} | ||
:adapter-clojure-jdbc {:extra-paths [:path-adapter-clojure-jdbc-src] | ||
:extra-deps {funcool/clojure.jdbc {:mvn/version "0.9.0"}}} | ||
:adapter-next-jdbc {:extra-paths [:path-adapter-next-jdbc-src] | ||
:extra-deps {seancorfield/next.jdbc {:mvn/version "1.2.659"}}} | ||
:hugsql-core-test ["hugsql-core/test"] | ||
:hugsql-adapter-test ["hugsql-adapter/test"] | ||
:hugsql-adapter-clojure-java-jdbc-test ["hugsql-adapter-clojure-java-jdbc/test"] | ||
:hugsql-adapter-clojure-jdbc-test ["hugsql-adapter-clojure-jdbc/test"] | ||
:hugsql-adapter-next-jdbc-test ["hugsql-adapter-next-jdbc/test"] | ||
|
||
;; tests | ||
:test-core {:extra-paths [:path-core-test] | ||
:extra-deps {org.apache.derby/derby {:mvn/version "10.16.1.1"} | ||
org.postgresql/postgresql {:mvn/version "42.6.0"} | ||
com.mysql/mysql-connector-j {:mvn/version "8.1.0"} | ||
org.xerial/sqlite-jdbc {:mvn/version "3.42.0.0"} | ||
org.hsqldb/hsqldb {:mvn/version "2.7.2"} | ||
com.h2database/h2 {:mvn/version "2.2.220"}}} | ||
:test-adapter {:extra-paths [:path-adapter-test] | ||
:extra-deps {}} | ||
:test-adapter-clojure-java-jdbc {:extra-paths [:path-adapter-clojure-java-jdbc-test] | ||
:extra-deps {}} | ||
:test-adapter-clojure-jdbc {:extra-paths [:path-adapter-clojure-jdbc-test] | ||
:extra-deps {}} | ||
:test-adapter-next-jdbc {:extra-paths [:path-adapter-next-jdbc-test] | ||
:extra-deps {}} | ||
:test {:main-opts ["-m" "kaocha.runner"] | ||
:extra-deps {lambdaisland/kaocha {:mvn/version "1.85.1342"} | ||
org.clojure/java.jdbc {:mvn/version "0.7.12"} | ||
funcool/clojure.jdbc {:mvn/version "0.9.0"} | ||
seancorfield/next.jdbc {:mvn/version "1.2.659"} | ||
org.apache.derby/derby {:mvn/version "10.16.1.1"} | ||
org.postgresql/postgresql {:mvn/version "42.6.0"} | ||
com.mysql/mysql-connector-j {:mvn/version "8.1.0"} | ||
org.xerial/sqlite-jdbc {:mvn/version "3.42.0.0"} | ||
org.hsqldb/hsqldb {:mvn/version "2.7.2"} | ||
com.h2database/h2 {:mvn/version "2.2.220"}} | ||
:extra-paths [:hugsql-core-src | ||
:hugsql-adapter-src | ||
:hugsql-adapter-clojure-java-jdbc-src | ||
:hugsql-adapter-clojure-jdbc-src | ||
:hugsql-adapter-next-jdbc-src | ||
:hugsql-core-test | ||
:hugsql-adapter-test | ||
:hugsql-adapter-clojure-java-jdbc-test | ||
:hugsql-adapter-clojure-jdbc-test | ||
:hugsql-adapter-next-jdbc-test]} | ||
|
||
:test {:main-opts ["-m" "kaocha.runner"] | ||
:extra-deps {lambdaisland/kaocha {:mvn/version "1.85.1342"} | ||
org.clojure/java.jdbc {:mvn/version "0.7.12"} | ||
funcool/clojure.jdbc {:mvn/version "0.9.0"} | ||
seancorfield/next.jdbc {:mvn/version "1.2.659"} | ||
org.apache.derby/derby {:mvn/version "10.16.1.1"} | ||
org.postgresql/postgresql {:mvn/version "42.6.0"} | ||
com.mysql/mysql-connector-j {:mvn/version "8.1.0"} | ||
org.xerial/sqlite-jdbc {:mvn/version "3.42.0.0"} | ||
org.hsqldb/hsqldb {:mvn/version "2.7.2"} | ||
com.h2database/h2 {:mvn/version "2.2.220"}} | ||
:extra-paths [:path-core-src | ||
:path-adapter-src | ||
:path-adapter-clojure-java-jdbc-src | ||
:path-adapter-clojure-jdbc-src | ||
:path-adapter-next-jdbc-src | ||
:path-core-test | ||
:path-adapter-test | ||
:path-adapter-clojure-java-jdbc-test | ||
:path-adapter-clojure-jdbc-test | ||
:path-adapter-next-jdbc-test]}}} | ||
:build {:deps {io.github.clojure/tools.build {:mvn/version "0.9.4"} | ||
borkdude/rewrite-edn {:mvn/version "0.4.6"}} | ||
:ns-default build}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{:paths ["src"] | ||
:deps {com.layerware/hugsql-adapter {:mvn/version "1.0.227"} | ||
org.clojure/java.jdbc {:mvn/version "0.7.12"}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{:paths ["src"] | ||
:deps {com.layerware/hugsql-adapter {:mvn/version "1.0.227"} | ||
funcool/clojure.jdbc {:mvn/version "0.9.0"}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{:paths ["src"] | ||
:deps {com.layerware/hugsql-adapter {:mvn/version "1.0.227"} | ||
seancorfield/next.jdbc {:mvn/version "1.2.659"}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
{:paths ["src"] | ||
:deps {}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{:paths ["src"] | ||
:deps {com.layerware/hugsql-adapter {:mvn/version "1.0.227"} | ||
org.clojure/tools.reader {:mvn/version "1.3.6"}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{:paths [] | ||
:deps {com.layerware/hugsql-core {:mvn/version "1.0.227"} | ||
com.layerware/hugsql-adapter-clojure-java-jdbc {:mvn/version "1.0.227"}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{:version "1.0.227"} |