|
9 | 9 |
|
10 | 10 | (def ^:private deps '#{binaryage/devtools binaryage/dirac}) |
11 | 11 |
|
12 | | -(defn- add-preloads! [in-file out-file] |
13 | | - (let [preloads ['devtools.preload 'dirac.runtime.preload] |
14 | | - spec (-> in-file slurp read-string)] |
| 12 | +(def ^:private preloads {:cljs-devtools 'devtools.preload :dirac 'dirac.runtime.preload}) |
| 13 | + |
| 14 | +(defn- add-preload! [lib in-file out-file] |
| 15 | + (let [spec (-> in-file slurp read-string) |
| 16 | + preload (get preloads lib)] |
15 | 17 | (when (not= :nodejs (-> spec :compiler-options :target)) |
16 | 18 | (util/info |
17 | 19 | "Adding :preloads %s to %s...\n" |
18 | | - preloads (.getName in-file)) |
| 20 | + preload (.getName in-file)) |
19 | 21 | (io/make-parents out-file) |
20 | 22 | (-> spec |
21 | | - (update-in [:compiler-options :preloads] #(into preloads %)) |
| 23 | + (update-in [:compiler-options :preloads] #(conj % preload)) |
22 | 24 | pr-str |
23 | 25 | ((partial spit out-file)))))) |
24 | 26 |
|
|
52 | 54 | :middleware ['dirac.nrepl/middleware]}) |
53 | 55 |
|
54 | 56 | (boot/deftask cljs-devtools |
55 | | - "Add Chrome Devtool enhancements for ClojureScript development." |
56 | | - [b ids BUILD_IDS #{str} "Only inject devtools into these builds (= .cljs.edn files)" |
57 | | - n nrepl-opts NREPL_OPTS edn "Options passed to boot's `repl` task." |
58 | | - d dirac-opts DIRAC_OPTS edn "Options passed to dirac."] |
| 57 | + "Add Chrome cljs-devtools enhancements for ClojureScript development." |
| 58 | + [b ids BUILD_IDS #{str} "Only inject devtools into these builds (= .cljs.edn files)"] |
| 59 | + (let [tmp (boot/tmp-dir!) |
| 60 | + prev (atom nil)] |
| 61 | + (comp |
| 62 | + (boot/with-pre-wrap fileset |
| 63 | + (doseq [f (relevant-cljs-edn @prev fileset ids)] |
| 64 | + (let [path (boot/tmp-path f) |
| 65 | + in-file (boot/tmp-file f) |
| 66 | + out-file (io/file tmp path)] |
| 67 | + (add-preload! :cljs-devtools in-file out-file))) |
| 68 | + (reset! prev fileset) |
| 69 | + (-> fileset |
| 70 | + (boot/add-resource tmp) |
| 71 | + (boot/commit!)))))) |
| 72 | + |
| 73 | +(boot/deftask dirac |
| 74 | + "Add dirac enhancements for ClojureScript development." |
| 75 | + [b ids BUILD_IDS #{str} "Only inject devtools into these builds (= .cljs.edn files)" |
| 76 | + n nrepl-opts NREPL_OPTS edn "Options passed to boot's `repl` task." |
| 77 | + d dirac-opts DIRAC_OPTS edn "Options passed to dirac."] |
59 | 78 | (let [tmp (boot/tmp-dir!) |
60 | 79 | prev (atom nil) |
61 | 80 | nrepl-opts (cond-> (merge nrepl-defaults nrepl-opts) |
|
75 | 94 | (let [path (boot/tmp-path f) |
76 | 95 | in-file (boot/tmp-file f) |
77 | 96 | out-file (io/file tmp path)] |
78 | | - (io/make-parents out-file) |
79 | | - (add-preloads! in-file out-file))) |
| 97 | + (add-preload! :dirac in-file out-file))) |
80 | 98 | (reset! prev fileset) |
81 | 99 | (-> fileset |
82 | 100 | (boot/add-resource tmp) |
|
0 commit comments