Declarative pod support for uberscript (#1227)
This commit is contained in:
parent
7af93adf15
commit
e81ef4aac0
4 changed files with 45 additions and 18 deletions
|
|
@ -52,11 +52,11 @@
|
||||||
[hf.depstar.uberjar :as uberjar]
|
[hf.depstar.uberjar :as uberjar]
|
||||||
[sci.addons :as addons]
|
[sci.addons :as addons]
|
||||||
[sci.core :as sci]
|
[sci.core :as sci]
|
||||||
|
[sci.impl.io :as sio]
|
||||||
[sci.impl.namespaces :as sci-namespaces]
|
[sci.impl.namespaces :as sci-namespaces]
|
||||||
[sci.impl.types :as sci-types]
|
[sci.impl.types :as sci-types]
|
||||||
[sci.impl.unrestrict :refer [*unrestricted*]]
|
[sci.impl.unrestrict :refer [*unrestricted*]]
|
||||||
[sci.impl.vars :as vars]
|
[sci.impl.vars :as vars])
|
||||||
[sci.impl.io :as sio])
|
|
||||||
(:gen-class))
|
(:gen-class))
|
||||||
|
|
||||||
(def windows?
|
(def windows?
|
||||||
|
|
@ -765,7 +765,16 @@ Use bb run --help to show this help output.
|
||||||
:expressions [(:source res)]})
|
:expressions [(:source res)]})
|
||||||
{})
|
{})
|
||||||
res))))
|
res))))
|
||||||
(when-let [pod (get @pod-namespaces namespace)]
|
(if-let [pod (get @pod-namespaces namespace)]
|
||||||
|
(if uberscript
|
||||||
|
(do
|
||||||
|
(swap! uberscript-sources conj
|
||||||
|
(format
|
||||||
|
"(babashka.pods/load-pod '%s \"%s\" '%s)\n"
|
||||||
|
(:pod-spec pod) (:version (:opts pod))
|
||||||
|
(dissoc (:opts pod)
|
||||||
|
:version :metadata)))
|
||||||
|
{})
|
||||||
(pods/load-pod (:pod-spec pod) (:opts pod)))
|
(pods/load-pod (:pod-spec pod) (:opts pod)))
|
||||||
(case namespace
|
(case namespace
|
||||||
clojure.spec.alpha
|
clojure.spec.alpha
|
||||||
|
|
@ -774,7 +783,7 @@ Use bb run --help to show this help output.
|
||||||
clojure.core.specs.alpha
|
clojure.core.specs.alpha
|
||||||
(binding [*out* *err*]
|
(binding [*out* *err*]
|
||||||
(println "[babashka] WARNING: clojure.core.specs.alpha is removed from the classpath, unless you explicitly add the dependency."))
|
(println "[babashka] WARNING: clojure.core.specs.alpha is removed from the classpath, unless you explicitly add the dependency."))
|
||||||
nil)))
|
nil))))
|
||||||
main (if (and jar (not main))
|
main (if (and jar (not main))
|
||||||
(when-let [res (cp/getResource
|
(when-let [res (cp/getResource
|
||||||
(cp/loader jar)
|
(cp/loader jar)
|
||||||
|
|
|
||||||
6
test-resources/babashka/uberscript/src/my/main_pod.clj
Normal file
6
test-resources/babashka/uberscript/src/my/main_pod.clj
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
(ns my.main-pod
|
||||||
|
(:require [my.other-ns-with-pod]
|
||||||
|
[pod.babashka.go-sqlite3 :as sqlite]))
|
||||||
|
|
||||||
|
(defn -main [& _args]
|
||||||
|
(sqlite/query ":memory:" ["SELECT 1 + 2 as sum"]))
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
(ns my.other-ns-with-pod
|
||||||
|
(:require [pod.babashka.go-sqlite3]))
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
(ns babashka.uberscript-test
|
(ns babashka.uberscript-test
|
||||||
(:require
|
(:require
|
||||||
[babashka.test-utils :as tu]
|
[babashka.test-utils :as tu]
|
||||||
[clojure.test :as t :refer [deftest is]]))
|
[clojure.test :as t :refer [deftest is]]
|
||||||
|
[clojure.string :as str]))
|
||||||
|
|
||||||
(deftest basic-test
|
(deftest basic-test
|
||||||
(let [tmp-file (java.io.File/createTempFile "uberscript" ".clj")]
|
(let [tmp-file (java.io.File/createTempFile "uberscript" ".clj")]
|
||||||
|
|
@ -23,3 +24,12 @@
|
||||||
(is (= ":clojure.string/foo\ntrue\n(\"1\" \"2\" \"3\" \"4\")\n"
|
(is (= ":clojure.string/foo\ntrue\n(\"1\" \"2\" \"3\" \"4\")\n"
|
||||||
(tu/bb nil "--file" (.getPath tmp-file) "1" "2" "3" "4"))))))
|
(tu/bb nil "--file" (.getPath tmp-file) "1" "2" "3" "4"))))))
|
||||||
|
|
||||||
|
(deftest pods-test
|
||||||
|
(let [tmp-file (java.io.File/createTempFile "uberscript" ".clj")]
|
||||||
|
(.deleteOnExit tmp-file)
|
||||||
|
(tu/with-config (pr-str '{:paths ["test-resources/babashka/uberscript/src"]
|
||||||
|
:pods {org.babashka/go-sqlite3 {:version "0.1.0"}}})
|
||||||
|
(is (empty? (tu/bb nil "uberscript" (.getPath tmp-file) "-m" "my.main-pod")))
|
||||||
|
(is (= 1 (count (re-seq #"load-pod 'org.babashka/go-sqlite3"
|
||||||
|
(str/join (str/split-lines (slurp tmp-file))))))))
|
||||||
|
(is (str/includes? (tu/bb nil "--file" (.getPath tmp-file)) "3"))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue