Fix local pod loading & support :cache opt

This commit is contained in:
Wes Morgan 2022-03-19 11:52:21 -06:00
parent c2a2facb0f
commit 91518181fb
No known key found for this signature in database
GPG key ID: 5639E4CBFA17DC84
2 changed files with 7 additions and 6 deletions

View file

@ -314,8 +314,8 @@
(binding [*out* *err*] (binding [*out* *err*]
(println (str/join " " (map pr-str strs))))) (println (str/join " " (map pr-str strs)))))
(defn resolve-pod [pod-spec {:keys [:version :force] :as opts}] (defn resolve-pod [pod-spec {:keys [:version :path :force] :as opts}]
(let [resolved (when (qualified-symbol? pod-spec) (let [resolved (when (and (qualified-symbol? pod-spec) version)
(resolver/resolve pod-spec version force)) (resolver/resolve pod-spec version force))
opts (if resolved opts (if resolved
(if-let [extra-opts (:options resolved)] (if-let [extra-opts (:options resolved)]
@ -324,6 +324,7 @@
opts) opts)
pod-spec (cond pod-spec (cond
resolved [(:executable resolved)] resolved [(:executable resolved)]
path [path]
(string? pod-spec) [pod-spec] (string? pod-spec) [pod-spec]
:else pod-spec)] :else pod-spec)]
{:pod-spec pod-spec, :opts opts})) {:pod-spec pod-spec, :opts opts}))

View file

@ -34,18 +34,18 @@
(with-open [r (PushbackInputStream. (io/input-stream cache-file))] (with-open [r (PushbackInputStream. (io/input-stream cache-file))]
(impl/read r))))) (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) (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))] (metadata-cache-file pod-spec opts))]
(when cache-file (when cache-file
(with-open [w (io/output-stream cache-file)] (with-open [w (io/output-stream cache-file)]
(impl/write w metadata))) (impl/write w metadata)))
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 (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))] (load-metadata-from-cache pod-spec opts))]
cached-metadata cached-metadata
(load-pod-metadata* pod-spec opts))] (load-pod-metadata* pod-spec opts))]