/
dev_extras.clj
87 lines (76 loc) · 2.53 KB
/
dev_extras.clj
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
;; Copyright © 2016-2018, JUXT LTD.
(ns dev-extras
(:require
[clojure.test :refer [run-all-tests]]
[edge.system :as system]
[edge.system.meta :as system.meta]
[integrant.repl]
[integrant.repl.state]
io.aviso.ansi)
(:import
[org.slf4j.bridge SLF4JBridgeHandler]))
(SLF4JBridgeHandler/removeHandlersForRootLogger)
(SLF4JBridgeHandler/install)
(when (try
(require 'figwheel.main.logging)
true
(catch Throwable _))
;; Undo default logger being extremely fine grained in figwheel,
;; in order to configure figwheel to delegate to slf4j.
(let [l @(resolve 'figwheel.main.logging/*logger*)]
((resolve 'figwheel.main.logging/remove-handlers) l)
(.setUseParentHandlers l true)))
(defmacro ^:private proxy-ns
[ns & vars]
(cons `do
(map (fn [v] `(def ~v ~(symbol (str ns) (str v)))) vars)))
(proxy-ns integrant.repl clear halt prep init reset reset-all)
(defmacro ^:private watch-var
[s alias]
`(do
(def ~alias ~s)
(add-watch (var ~s)
(keyword "dev-extras" ~(name alias))
(fn [_# _# _# new#]
(alter-var-root
(var ~alias)
(constantly new#))))))
(watch-var integrant.repl.state/system system)
(watch-var integrant.repl.state/config system-config)
(defn go []
(let [res (integrant.repl/go)]
(doseq [message (system.meta/useful-infos system-config system)]
(println (io.aviso.ansi/yellow (format "[Edge] %s" message))))
(println (io.aviso.ansi/bold-yellow "[Edge] Now make code changes, then enter (reset) here"))
res))
(integrant.repl/set-prep! #(system/system-config {:profile :dev}))
(defn test-all []
(run-all-tests #"edge.*test$"))
(defn reset-and-test []
(reset)
(time (test-all)))
(defn cljs-repl
"Start a ClojureScript REPL"
([]
(if (try
(require 'figwheel-sidecar.repl-api)
(catch java.io.FileNotFoundException _
false))
(eval
`(do
(require 'figwheel-sidecar.repl-api)
(figwheel-sidecar.repl-api/cljs-repl)))
(eval
`(do
(require 'figwheel.main.api)
(require 'figwheel.main)
(let [builds# (keys @figwheel.main/build-registry)]
(if (= (count builds#) 1)
(figwheel.main.api/cljs-repl (first builds#))
(throw (ex-info "A build must be specified, please call with an argument"))))))))
([build-id]
;; Assume figwheel main
(eval
`(do
(require 'figwheel.main.api)
(figwheel.main.api/cljs-repl ~build-id)))))