aboutsummaryrefslogtreecommitdiff
path: root/build.clj
diff options
context:
space:
mode:
authorShagun Agrawal <agrawalshagun07@gmail.com>2024-07-20 22:09:11 +0530
committerShagun Agrawal <agrawalshagun07@gmail.com>2024-07-20 22:09:11 +0530
commitdcfa4a59171b9b1ba545a2e07c38b601fcfdcb02 (patch)
tree5ac1a615d5d03ac3495b65f7d995db32cc729949 /build.clj
project setup
Diffstat (limited to 'build.clj')
-rw-r--r--build.clj39
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)