diff --git a/src/babashka/pods/impl.clj b/src/babashka/pods/impl.clj index 417b21e..33ac543 100644 --- a/src/babashka/pods/impl.clj +++ b/src/babashka/pods/impl.clj @@ -314,8 +314,8 @@ (binding [*out* *err*] (println (str/join " " (map pr-str strs))))) -(defn resolve-pod [pod-spec {:keys [:version :force] :as opts}] - (let [resolved (when (qualified-symbol? pod-spec) +(defn resolve-pod [pod-spec {:keys [:version :path :force] :as opts}] + (let [resolved (when (and (qualified-symbol? pod-spec) version) (resolver/resolve pod-spec version force)) opts (if resolved (if-let [extra-opts (:options resolved)] @@ -324,6 +324,7 @@ opts) pod-spec (cond resolved [(:executable resolved)] + path [path] (string? pod-spec) [pod-spec] :else pod-spec)] {:pod-spec pod-spec, :opts opts})) diff --git a/src/babashka/pods/sci.clj b/src/babashka/pods/sci.clj index b7055a4..7834cb3 100644 --- a/src/babashka/pods/sci.clj +++ b/src/babashka/pods/sci.clj @@ -34,18 +34,18 @@ (with-open [r (PushbackInputStream. (io/input-stream cache-file))] (impl/read r))))) -(defn load-pod-metadata* [pod-spec {:keys [:version] :as opts}] +(defn load-pod-metadata* [pod-spec {:keys [:version :cache] :as opts}] (let [metadata (impl/load-pod-metadata pod-spec opts) - cache-file (when (qualified-symbol? pod-spec) ; don't cache local pods b/c their namespaces can change + cache-file (when (and version cache) (metadata-cache-file pod-spec opts))] (when cache-file (with-open [w (io/output-stream cache-file)] (impl/write w metadata))) metadata)) -(defn load-pod-metadata [pod-spec {:keys [:version] :as opts}] +(defn load-pod-metadata [pod-spec {:keys [:version :cache] :as opts}] (let [metadata - (if-let [cached-metadata (when (qualified-symbol? pod-spec) ; don't cache local pods b/c their namespaces can change + (if-let [cached-metadata (when (and version cache) (load-metadata-from-cache pod-spec opts))] cached-metadata (load-pod-metadata* pod-spec opts))]