From f65eae1f1862968137daf467298bc992650a0f3c Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 25 May 2020 13:55:21 +0200 Subject: [PATCH] wip --- deps.edn | 2 +- src/babashka/pods/sci.clj | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/deps.edn b/deps.edn index 6557c81..18c47fe 100644 --- a/deps.edn +++ b/deps.edn @@ -3,7 +3,7 @@ :aliases {:sci {:extra-deps - {borkdude/sci {:mvn/version "0.0.13-alpha.26"}}} + {borkdude/sci {:mvn/version "0.0.13-alpha.27"}}} :test {:extra-deps {test-runner diff --git a/src/babashka/pods/sci.clj b/src/babashka/pods/sci.clj index afd8824..45a1b2d 100644 --- a/src/babashka/pods/sci.clj +++ b/src/babashka/pods/sci.clj @@ -2,6 +2,19 @@ (:require [babashka.pods.impl :as impl] [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 (with-meta (fn @@ -39,16 +52,8 @@ v) v))))})) namespaces (:namespaces pod)] - (doseq [[ns-name vars] namespaces - :let [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))))) + (doseq [[ns-name vars] namespaces] + (process-namespace ctx {:name ns-name :vars vars})) (sci/future (impl/processor pod)) {:pod/id (:pod-id pod)}))) {:sci.impl/op :needs-ctx}))