This commit is contained in:
Michiel Borkent 2020-05-25 13:55:21 +02:00
parent 201b2f194a
commit f65eae1f18
2 changed files with 16 additions and 11 deletions

View file

@ -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

View file

@ -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}))