Stop depending on babashka
Instead accept an arg for the thing we were getting from it (location of the bb.edn file)
This commit is contained in:
parent
70279f30f1
commit
4f016ce038
1 changed files with 23 additions and 21 deletions
|
|
@ -2,8 +2,7 @@
|
||||||
(:require [babashka.pods.impl :as impl]
|
(:require [babashka.pods.impl :as impl]
|
||||||
[sci.core :as sci]
|
[sci.core :as sci]
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
[babashka.pods.impl.resolver :as resolver]
|
[babashka.pods.impl.resolver :as resolver])
|
||||||
[babashka.impl.common :as common])
|
|
||||||
(:import (java.io PushbackInputStream File)))
|
(:import (java.io PushbackInputStream File)))
|
||||||
|
|
||||||
(set! *warn-on-reflection* true)
|
(set! *warn-on-reflection* true)
|
||||||
|
|
@ -25,44 +24,47 @@
|
||||||
(string? var-value)
|
(string? var-value)
|
||||||
(sci/eval-string* ctx 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
|
(if version
|
||||||
(io/file (resolver/cache-dir {:pod/name pod-spec :pod/version version})
|
(io/file (resolver/cache-dir {:pod/name pod-spec :pod/version version})
|
||||||
"metadata.cache")
|
"metadata.cache")
|
||||||
(let [bb-edn-file (-> @common/bb-edn :file io/file)
|
(let [config-dir (.getParentFile bb-edn-file)
|
||||||
config-dir (.getParentFile bb-edn-file)
|
|
||||||
cache-dir (io/file config-dir ".babashka")
|
cache-dir (io/file config-dir ".babashka")
|
||||||
pod-file (-> path io/file .getName)
|
pod-file (-> path io/file .getName)
|
||||||
cache-file (io/file cache-dir (str pod-file ".metadata.cache"))]
|
cache-file (io/file cache-dir (str pod-file ".metadata.cache"))]
|
||||||
cache-file)))
|
cache-file)))
|
||||||
|
|
||||||
(defn load-metadata-from-cache [pod-spec opts]
|
(defn load-metadata-from-cache [bb-edn-file pod-spec opts]
|
||||||
(let [cache-file (metadata-cache-file pod-spec opts)]
|
(let [cache-file (metadata-cache-file bb-edn-file pod-spec opts)]
|
||||||
(when (.exists cache-file)
|
(when (.exists cache-file)
|
||||||
(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 :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)
|
(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
|
(when cache-file
|
||||||
(io/make-parents cache-file)
|
(io/make-parents 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 [:cache] :as opts}]
|
(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
|
(let [metadata
|
||||||
(if-let [cached-metadata (when cache
|
(if-let [cached-metadata (when cache
|
||||||
(load-metadata-from-cache pod-spec opts))]
|
(load-metadata-from-cache bb-edn-file
|
||||||
|
pod-spec
|
||||||
|
opts))]
|
||||||
cached-metadata
|
cached-metadata
|
||||||
(load-pod-metadata* pod-spec opts))]
|
(load-pod-metadata* bb-edn-file pod-spec opts))]
|
||||||
(reduce
|
(reduce
|
||||||
(fn [pod-namespaces ns]
|
(fn [pod-namespaces ns]
|
||||||
(let [ns-sym (-> ns (get "name") impl/bytes->string symbol)]
|
(let [ns-sym (-> ns (get "name") impl/bytes->string symbol)]
|
||||||
(assoc pod-namespaces ns-sym {:pod-spec pod-spec
|
(assoc pod-namespaces ns-sym {:pod-spec pod-spec
|
||||||
:opts (assoc opts :metadata metadata)})))
|
:opts (assoc opts :metadata metadata)})))
|
||||||
{} (get metadata "namespaces"))))
|
{} (get metadata "namespaces")))))
|
||||||
|
|
||||||
(defn load-pod
|
(defn load-pod
|
||||||
([ctx pod-spec] (load-pod ctx pod-spec nil))
|
([ctx pod-spec] (load-pod ctx pod-spec nil))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue