wip
This commit is contained in:
parent
201b2f194a
commit
f65eae1f18
2 changed files with 16 additions and 11 deletions
2
deps.edn
2
deps.edn
|
|
@ -3,7 +3,7 @@
|
||||||
:aliases
|
:aliases
|
||||||
{:sci
|
{:sci
|
||||||
{:extra-deps
|
{:extra-deps
|
||||||
{borkdude/sci {:mvn/version "0.0.13-alpha.26"}}}
|
{borkdude/sci {:mvn/version "0.0.13-alpha.27"}}}
|
||||||
:test
|
:test
|
||||||
{:extra-deps
|
{:extra-deps
|
||||||
{test-runner
|
{test-runner
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,19 @@
|
||||||
(:require [babashka.pods.impl :as impl]
|
(:require [babashka.pods.impl :as impl]
|
||||||
[sci.core :as sci]))
|
[sci.core :as sci]))
|
||||||
|
|
||||||
|
(defn process-namespace [ctx {:keys [:name :vars]}]
|
||||||
|
(let [env (:env ctx)
|
||||||
|
ns-name name
|
||||||
|
sci-ns (sci/create-ns ns-name)]
|
||||||
|
(sci/binding [sci/ns sci-ns]
|
||||||
|
(doseq [[var-name var-value] vars]
|
||||||
|
(cond (ifn? var-value)
|
||||||
|
(swap! env assoc-in [:namespaces ns-name var-name]
|
||||||
|
(sci/new-var
|
||||||
|
(symbol (str ns-name) (str var-name)) var-value))
|
||||||
|
(string? var-value)
|
||||||
|
(sci/eval-string* ctx var-value))))))
|
||||||
|
|
||||||
(def load-pod
|
(def load-pod
|
||||||
(with-meta
|
(with-meta
|
||||||
(fn
|
(fn
|
||||||
|
|
@ -39,16 +52,8 @@
|
||||||
v)
|
v)
|
||||||
v))))}))
|
v))))}))
|
||||||
namespaces (:namespaces pod)]
|
namespaces (:namespaces pod)]
|
||||||
(doseq [[ns-name vars] namespaces
|
(doseq [[ns-name vars] namespaces]
|
||||||
:let [sci-ns (sci/create-ns ns-name)]]
|
(process-namespace ctx {:name ns-name :vars vars}))
|
||||||
(sci/binding [sci/ns sci-ns]
|
|
||||||
(doseq [[var-name var-value] vars]
|
|
||||||
(cond (ifn? var-value)
|
|
||||||
(swap! env assoc-in [:namespaces ns-name var-name]
|
|
||||||
(sci/new-var
|
|
||||||
(symbol (str ns-name) (str var-name)) var-value))
|
|
||||||
(string? var-value)
|
|
||||||
(sci/eval-string* ctx var-value)))))
|
|
||||||
(sci/future (impl/processor pod))
|
(sci/future (impl/processor pod))
|
||||||
{:pod/id (:pod-id pod)})))
|
{:pod/id (:pod-id pod)})))
|
||||||
{:sci.impl/op :needs-ctx}))
|
{:sci.impl/op :needs-ctx}))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue