blob: 3abc8a87a760ddde926f0f9cbf75a1dd3c2ffd58 (
plain)
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
|
(ns build
"build electric.jar library artifact and demos"
(:require [clojure.tools.build.api :as b]
[org.corfield.build :as bb]
[shadow.cljs.devtools.api :as shadow-api] ; so as not to shell out to NPM for shadow
[shadow.cljs.devtools.server :as shadow-server]))
(def lib 'com.hyperfiddle/electric)
(def version (b/git-process {:git-args "describe --tags --long --always --dirty"}))
(def basis (b/create-basis {:project "deps.edn"}))
(defn clean [opts]
(bb/clean opts))
(def class-dir "target/classes")
(defn default-jar-name [{:keys [version] :or {version version}}]
(format "target/%s-%s-standalone.jar" (name lib) version))
(defn clean-cljs [_]
(b/delete {:path "resources/public/js"}))
(defn build-client [{:keys [optimize debug verbose version]
:or {optimize true, debug false, verbose false, version version}}]
(println "Building client. Version:" version)
(shadow-server/start!)
(shadow-api/release :prod {:debug debug,
:verbose verbose,
:config-merge [{:compiler-options {:optimizations (if optimize :advanced :simple)}
:closure-defines {'hyperfiddle.electric-client/VERSION version}}]})
(shadow-server/stop!))
(defn uberjar [{:keys [jar-name version optimize debug verbose]
:or {version version, optimize true, debug false, verbose false}}]
(println "Cleaning up before build")
(clean nil)
(println "Cleaning cljs compiler output")
(clean-cljs nil)
(build-client {:optimize optimize, :debug debug, :verbose verbose, :version version})
(println "Bundling sources")
(b/copy-dir {:src-dirs ["src" "resources"]
:target-dir class-dir})
(println "Compiling server. Version:" version)
(b/compile-clj {:basis basis
:src-dirs ["src"]
:ns-compile '[prod]
:class-dir class-dir})
(println "Building uberjar")
(b/uber {:class-dir class-dir
:uber-file (str (or jar-name (default-jar-name {:version version})))
:basis basis
:main 'prod}))
(defn noop [_]) ; run to preload mvn deps
|