diff options
| author | Shagun Agrawal <agrawalshagun07@gmail.com> | 2024-07-20 22:09:11 +0530 |
|---|---|---|
| committer | Shagun Agrawal <agrawalshagun07@gmail.com> | 2024-07-20 22:09:11 +0530 |
| commit | dcfa4a59171b9b1ba545a2e07c38b601fcfdcb02 (patch) | |
| tree | 5ac1a615d5d03ac3495b65f7d995db32cc729949 /build.clj | |
project setup
Diffstat (limited to 'build.clj')
| -rw-r--r-- | build.clj | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/build.clj b/build.clj new file mode 100644 index 0000000..adbcbf1 --- /dev/null +++ b/build.clj @@ -0,0 +1,39 @@ +(ns build + (:refer-clojure :exclude [test]) + (:require [clojure.tools.build.api :as b])) + +(def lib 'net.clojars.cljcc/cljcc) +(def version "0.1.0-SNAPSHOT") +(def main 'cljcc.cljcc) +(def class-dir "target/classes") + +(defn test "Run all the tests." [opts] + (let [basis (b/create-basis {:aliases [:test]}) + cmds (b/java-command + {:basis basis + :main 'clojure.main + :main-args ["-m" "cognitect.test-runner"]}) + {:keys [exit]} (b/process cmds)] + (when-not (zero? exit) (throw (ex-info "Tests failed" {})))) + opts) + +(defn- uber-opts [opts] + (assoc opts + :lib lib :main main + :uber-file (format "target/%s-%s.jar" lib version) + :basis (b/create-basis {}) + :class-dir class-dir + :src-dirs ["src"] + :ns-compile [main])) + +(defn ci "Run the CI pipeline of tests (and build the uberjar)." [opts] + (test opts) + (b/delete {:path "target"}) + (let [opts (uber-opts opts)] + (println "\nCopying source...") + (b/copy-dir {:src-dirs ["resources" "src"] :target-dir class-dir}) + (println (str "\nCompiling " main "...")) + (b/compile-clj opts) + (println "\nBuilding JAR...") + (b/uber opts)) + opts) |
