wip
This commit is contained in:
parent
9a70ecfd9d
commit
1235a92f18
5 changed files with 38 additions and 12 deletions
|
|
@ -12,4 +12,4 @@
|
|||
:username :env/babashka_nrepl_clojars_user
|
||||
:password :env/babashka_nrepl_clojars_pass
|
||||
:sign-releases false}]]
|
||||
:profiles {:test {:dependencies [[borkdude/sci "0.0.13-alpha.26"]]}})
|
||||
:profiles {:test {:dependencies [[borkdude/sci "0.0.13-alpha.27"]]}})
|
||||
|
|
|
|||
|
|
@ -236,8 +236,8 @@
|
|||
(defn load-ns [pod namespace callback]
|
||||
(let [id (next-id)
|
||||
callback (fn [reply]
|
||||
(let [namespace (bencode->namespace pod reply)]
|
||||
(callback namespace)))]
|
||||
(let [[name-sym vars] (bencode->namespace pod reply)]
|
||||
(callback {:name name-sym :vars vars})))]
|
||||
(swap! callbacks assoc id callback)
|
||||
(write (:stdin pod)
|
||||
{"op" "load"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,9 @@
|
|||
(sci/new-var
|
||||
(symbol (str ns-name) (str var-name)) var-value))
|
||||
(string? var-value)
|
||||
(sci/eval-string* ctx var-value))))))
|
||||
(do
|
||||
(prn "eval" @sci/ns var-value)
|
||||
(sci/eval-string* ctx var-value)))))))
|
||||
|
||||
(def load-pod
|
||||
(with-meta
|
||||
|
|
@ -40,9 +42,11 @@
|
|||
v)
|
||||
v))))}))
|
||||
namespaces (:namespaces pod)
|
||||
namespaces-to-load (when (contains? (:ops pod) :load)
|
||||
(set (filter (fn [[_ns-name vars]]
|
||||
(nil? vars))
|
||||
load? (contains? (:ops pod) :load)
|
||||
namespaces-to-load (when load?
|
||||
(set (keep (fn [[ns-name vars]]
|
||||
(when (empty? vars)
|
||||
ns-name))
|
||||
namespaces)))]
|
||||
(when (seq namespaces-to-load)
|
||||
(let [load-fn (fn load-fn [{:keys [:namespace]}]
|
||||
|
|
@ -57,7 +61,9 @@
|
|||
(when prev-load-fn
|
||||
(prev-load-fn m))))]
|
||||
(swap! env assoc :load-fn new-load-fn)))
|
||||
(doseq [[ns-name vars] namespaces]
|
||||
(doseq [[ns-name vars] namespaces
|
||||
:when (or (not load)
|
||||
(seq vars))]
|
||||
(process-namespace ctx {:name ns-name :vars vars}))
|
||||
(sci/future (impl/processor pod))
|
||||
{:pod/id (:pod-id pod)})))
|
||||
|
|
|
|||
|
|
@ -80,8 +80,10 @@
|
|||
;; reads thing with other tag
|
||||
{"name" "read-other-tag"
|
||||
"code" "(defn read-other-tag [x] [x x])"}]
|
||||
dependents)}]
|
||||
"ops" {"shutdown" {}}})
|
||||
dependents)}
|
||||
{"name" "pod.test-pod.loaded"}]
|
||||
"ops" {"shutdown" {}
|
||||
"load" {}}})
|
||||
(recur))
|
||||
:invoke (let [var (-> (get message "var")
|
||||
read-string
|
||||
|
|
@ -156,7 +158,20 @@
|
|||
"id" id
|
||||
"value" "#my/other-tag[1]"}))
|
||||
(recur))
|
||||
:shutdown (System/exit 0))))))
|
||||
:shutdown (System/exit 0)
|
||||
:load (let [path (-> (get message "path")
|
||||
read-string
|
||||
symbol)
|
||||
id (-> (get message "id")
|
||||
read-string)]
|
||||
(case path
|
||||
pod.test-pod.loaded
|
||||
(write
|
||||
{"status" ["done"]
|
||||
"id" id
|
||||
"name" "pod.test-pod.loaded"
|
||||
"vars" [{"name" "loaded"
|
||||
"code" "(defn loaded [x] (inc x))"}]}))))))))
|
||||
(catch Exception e
|
||||
(binding [*out* *err*]
|
||||
(prn e))))))
|
||||
|
|
|
|||
|
|
@ -46,6 +46,10 @@
|
|||
(def tagged (pod/reader-tag))
|
||||
(def other-tagged (pod/other-tag))
|
||||
|
||||
(require '[pod.test-pod.loaded])
|
||||
|
||||
(def loaded (pod.test-pod.loaded/loaded 1))
|
||||
|
||||
(pods/unload-pod pod-id)
|
||||
(def successfully-removed (nil? (find-ns 'pod.test-pod)))
|
||||
|
||||
|
|
@ -63,4 +67,5 @@
|
|||
successfully-removed
|
||||
x9
|
||||
tagged
|
||||
other-tagged]
|
||||
other-tagged
|
||||
loaded]
|
||||
|
|
|
|||
Loading…
Reference in a new issue