From 22be2b584266583b4e17af99ff2e00bb274e0171 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 25 May 2020 16:24:25 +0200 Subject: [PATCH] wip --- src/babashka/pods/impl.clj | 6 ++++-- src/babashka/pods/sci.clj | 5 +++-- test-resources/test_program.clj | 1 - 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/babashka/pods/impl.clj b/src/babashka/pods/impl.clj index 83e77a8..c948809 100644 --- a/src/babashka/pods/impl.clj +++ b/src/babashka/pods/impl.clj @@ -235,14 +235,16 @@ (defn load-ns [pod namespace callback] (let [id (next-id) + prom (promise) callback (fn [reply] (let [[name-sym vars] (bencode->namespace pod reply)] - (callback {:name name-sym :vars vars})))] + (callback {:name name-sym :vars vars :done prom})))] (swap! callbacks assoc id callback) (write (:stdin pod) {"op" "load" "path" (str namespace) - "id" id}))) + "id" id}) + @prom)) (defn invoke-public [pod-id fn-sym args opts] (let [pod (lookup-pod pod-id)] diff --git a/src/babashka/pods/sci.clj b/src/babashka/pods/sci.clj index de25524..5ee910d 100644 --- a/src/babashka/pods/sci.clj +++ b/src/babashka/pods/sci.clj @@ -2,7 +2,7 @@ (:require [babashka.pods.impl :as impl] [sci.core :as sci])) -(defn process-namespace [ctx {:keys [:name :vars]}] +(defn process-namespace [ctx {:keys [:name :vars :done]}] (let [env (:env ctx) ns-name name sci-ns (sci/create-ns ns-name)] @@ -16,7 +16,8 @@ (symbol (str ns-name) (str var-name)) var-value)) (string? var-value) (sci/eval-string* ctx var-value)))) - #_(prn (get-in @env [:namespaces ns-name])))) + #_(prn (get-in @env [:namespaces ns-name]))) + (when done (deliver done :ok))) (def load-pod (with-meta diff --git a/test-resources/test_program.clj b/test-resources/test_program.clj index 002d3d6..1d878a6 100644 --- a/test-resources/test_program.clj +++ b/test-resources/test_program.clj @@ -48,7 +48,6 @@ (require '[pod.test-pod.loaded]) -(find-ns 'pod.test-pod.loaded) ;; nil, but this call makes the next call pass. huh? (def loaded (pod.test-pod.loaded/loaded 1)) (pods/unload-pod pod-id)