From 4f016ce038aebfa22a6b46c7a3333955a564b60f Mon Sep 17 00:00:00 2001 From: Wes Morgan Date: Wed, 23 Mar 2022 09:45:22 -0600 Subject: [PATCH] Stop depending on babashka Instead accept an arg for the thing we were getting from it (location of the bb.edn file) --- src/babashka/pods/sci.clj | 44 ++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/babashka/pods/sci.clj b/src/babashka/pods/sci.clj index ad0fea8..3965392 100644 --- a/src/babashka/pods/sci.clj +++ b/src/babashka/pods/sci.clj @@ -2,8 +2,7 @@ (:require [babashka.pods.impl :as impl] [sci.core :as sci] [clojure.java.io :as io] - [babashka.pods.impl.resolver :as resolver] - [babashka.impl.common :as common]) + [babashka.pods.impl.resolver :as resolver]) (:import (java.io PushbackInputStream File))) (set! *warn-on-reflection* true) @@ -25,44 +24,47 @@ (string? var-value) (sci/eval-string* ctx var-value)))))) -(defn metadata-cache-file ^File [pod-spec {:keys [:version :path]}] +(defn metadata-cache-file ^File [^File bb-edn-file pod-spec {:keys [:version :path]}] (if version (io/file (resolver/cache-dir {:pod/name pod-spec :pod/version version}) "metadata.cache") - (let [bb-edn-file (-> @common/bb-edn :file io/file) - config-dir (.getParentFile bb-edn-file) + (let [config-dir (.getParentFile bb-edn-file) cache-dir (io/file config-dir ".babashka") pod-file (-> path io/file .getName) cache-file (io/file cache-dir (str pod-file ".metadata.cache"))] cache-file))) -(defn load-metadata-from-cache [pod-spec opts] - (let [cache-file (metadata-cache-file pod-spec opts)] +(defn load-metadata-from-cache [bb-edn-file pod-spec opts] + (let [cache-file (metadata-cache-file bb-edn-file pod-spec opts)] (when (.exists cache-file) (with-open [r (PushbackInputStream. (io/input-stream cache-file))] (impl/read r))))) -(defn load-pod-metadata* [pod-spec {:keys [:version :cache] :as opts}] +(defn load-pod-metadata* [bb-edn-file pod-spec {:keys [:version :cache] :as opts}] (let [metadata (impl/load-pod-metadata pod-spec opts) - cache-file (when cache (metadata-cache-file pod-spec opts))] + cache-file (when cache (metadata-cache-file bb-edn-file pod-spec opts))] (when cache-file (io/make-parents cache-file) (with-open [w (io/output-stream cache-file)] (impl/write w metadata))) metadata)) -(defn load-pod-metadata [pod-spec {:keys [:cache] :as opts}] - (let [metadata - (if-let [cached-metadata (when cache - (load-metadata-from-cache pod-spec opts))] - cached-metadata - (load-pod-metadata* pod-spec opts))] - (reduce - (fn [pod-namespaces ns] - (let [ns-sym (-> ns (get "name") impl/bytes->string symbol)] - (assoc pod-namespaces ns-sym {:pod-spec pod-spec - :opts (assoc opts :metadata metadata)}))) - {} (get metadata "namespaces")))) +(defn load-pod-metadata + ([pod-spec opts] (load-pod-metadata nil pod-spec opts)) + ([bb-edn-file pod-spec {:keys [:cache] :as opts}] + (let [metadata + (if-let [cached-metadata (when cache + (load-metadata-from-cache bb-edn-file + pod-spec + opts))] + cached-metadata + (load-pod-metadata* bb-edn-file pod-spec opts))] + (reduce + (fn [pod-namespaces ns] + (let [ns-sym (-> ns (get "name") impl/bytes->string symbol)] + (assoc pod-namespaces ns-sym {:pod-spec pod-spec + :opts (assoc opts :metadata metadata)}))) + {} (get metadata "namespaces"))))) (defn load-pod ([ctx pod-spec] (load-pod ctx pod-spec nil))