Skip to content

Commit

Permalink
Migrated to clj-reload and duti
Browse files Browse the repository at this point in the history
  • Loading branch information
tonsky committed Apr 23, 2024
1 parent 86d8204 commit 2f72892
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 46 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -27,4 +27,5 @@ web/*.js
web/out
web/target-cljs
.rebl
.shadow-cljs
.shadow-cljs
.clj-kondo
3 changes: 2 additions & 1 deletion deps.edn
Expand Up @@ -26,7 +26,8 @@
:dev {
:extra-paths ["dev"]
:extra-deps {
org.clojure/tools.namespace {:mvn/version "1.3.0"}
io.github.tonsky/clj-reload {:mvn/version "0.4.3"}
io.github.tonsky/duti {:git/sha "78bbf61953b9a685d02ff8cc63d04e4e8da81eb9"}
}
}

Expand Down
1 change: 0 additions & 1 deletion dev/data_readers.clj

This file was deleted.

63 changes: 20 additions & 43 deletions dev/user.clj
@@ -1,54 +1,31 @@
(ns user
(:require
[clojure.core.server :as server]
[clojure.java.io :as io]
[clojure.test :as t]
[clojure.tools.namespace.repl :as ns]))
[clj-reload.core :as reload]
[duti.core :as duti]))

(ns/set-refresh-dirs "src" "bench" "test" #_"bench_datomic" #_"test_datomic")
(reload/init
{:dirs ["src" "bench" "test" #_"bench_datomic" #_"test_datomic"]
:no-reload '#{user}})

(defn reload []
(defn reload [& [opts]]
(set! *warn-on-reflection* true)
(let [res (ns/refresh)]
(if (instance? Throwable res)
(do
(.printStackTrace ^Throwable res)
(throw res))
res)))

(def lock
(Object.))

(defn position []
(let [trace (->> (Thread/currentThread)
(.getStackTrace)
(seq))
el ^StackTraceElement (nth trace 4)]
(str "[" (clojure.lang.Compiler/demunge (.getClassName el)) " " (.getFileName el) ":" (.getLineNumber el) "]")))

(defn p [form]
`(let [t# (System/currentTimeMillis)
res# ~form]
(locking lock
(println (str "#p" (position) " " '~form " => (" (- (System/currentTimeMillis) t#) " ms) " res#)))
res#))
(let [res (reload/reload opts)
cnt (count (:loaded res))]
(str "Reloaded " cnt " namespace" (when (not= 1 cnt) "s"))))

(defn -main [& args]
;; setup repl
(let [args (apply array-map args)
port (or
(some-> (get args "--port") parse-long)
(+ 1024 (rand-int 64512)))
file (io/file ".repl-port")]
(println "Started Server Socket REPL on port" port)
(spit file port)
(.deleteOnExit file)
(server/start-server
{:name "repl"
:port port
:accept 'clojure.core.server/repl
:server-daemon false})))
;; starting app
_ (set! *warn-on-reflection* true)
_ (require 'datascript.test)
;; starting socket repl
port (some-> (get args "--port") parse-long)
_ (duti/start-socket-repl {:port port})]))

(defn test-all []
(reload)
(t/run-all-tests #"datascript\..*"))
(duti/test #"datascript\.test\..*"))

(defn -test-main [_]
(reload {:only #"datascript\.test\..*"})
(duti/test-exit #"datascript\.test\..*"))

0 comments on commit 2f72892

Please sign in to comment.