diff --git a/doc/pods.md b/doc/pods.md index 8c58c53c..34ea296b 100644 --- a/doc/pods.md +++ b/doc/pods.md @@ -30,11 +30,8 @@ _below_ in Polish and Russian. In Romanian it means _bridge_ ### Examples -Eductional examples of pods can be found [here](../examples/pods): - -- [pod-babashka-hsqldb](../examples/pods/pod-babashka-hsqldb): a pod that allows - you to create and fire queries at a [HSQLDB](http://www.hsqldb.org/) - database. Implemented in Clojure. +Beyond the already available pods mentioned above, eductional examples of pods +can be found [here](../examples/pods): - [pod-lispyclouds-sqlite](../examples/pods/pod-lispyclouds-sqlite): a pod that allows you to create and fire queries at a [sqlite](https://www.sqlite.org/) diff --git a/examples/hsqldb_unused_vars.clj b/examples/hsqldb_unused_vars.clj index ebb94c86..613d3ba2 100755 --- a/examples/hsqldb_unused_vars.clj +++ b/examples/hsqldb_unused_vars.clj @@ -16,11 +16,14 @@ (ns hsqldb-unused-vars (:require + [babashka.pods :as pods] [clojure.edn :as edn] [clojure.java.shell :refer [sh]] - [clojure.pprint :refer [print-table]] - [next.jdbc :as jdbc] - [next.jdbc.sql :as sql])) + [clojure.pprint :refer [print-table]])) + +(pods/load-pod "pod-babashka-hsqldb") +(require '[pod.babashka.hsqldb :as jdbc] + '[pod.babashka.hsqldb.sql :as sql]) (def db "jdbc:hsqldb:mem:testdb;sql.syntax_mys=true") diff --git a/examples/pods/pod-babashka-hsqldb/.gitignore b/examples/pods/pod-babashka-hsqldb/.gitignore deleted file mode 100644 index faad8a87..00000000 --- a/examples/pods/pod-babashka-hsqldb/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -/target -/classes -/checkouts -profiles.clj -pom.xml -pom.xml.asc -*.jar -*.class -/.lein-* -/.nrepl-port -.hgignore -.hg/ -/bb -.clj-kondo/.cache -!java/src/babashka/impl/LockFix.class -!test-resources/babashka/src_for_classpath_test/foo.jar -!test-resources/pom.xml -.cpcache -!reflection.json -hsqldb-babashka-plugin diff --git a/examples/pods/pod-babashka-hsqldb/README.md b/examples/pods/pod-babashka-hsqldb/README.md deleted file mode 100644 index bd442876..00000000 --- a/examples/pods/pod-babashka-hsqldb/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# pod-babashka-hsqldb - -## Compile - -Run `./compile` - -## Run - -``` clojure -(babashka.pods/load-pod "./pod-babashka-hsqldb") -(pod.babashka.hsqldb/execute! "jdbc:hsqldb:mem:testdb;sql.syntax_mys=true" ["create table foo ( foo int );"])' -;;=> [#:next.jdbc{:update-count 0}] -``` diff --git a/examples/pods/pod-babashka-hsqldb/compile b/examples/pods/pod-babashka-hsqldb/compile deleted file mode 100755 index fce66613..00000000 --- a/examples/pods/pod-babashka-hsqldb/compile +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash - -set -xeo pipefail - -if [ -z "$GRAALVM_HOME" ]; then - echo "Please set GRAALVM_HOME" - exit 1 -fi - -"$GRAALVM_HOME/bin/gu" install native-image || true -export PATH=$GRAALVM_HOME/bin:$PATH - -JAR=target/pod-babashka-hsqldb-0.0.1-SNAPSHOT-standalone.jar - -lein do clean, uberjar - -$GRAALVM_HOME/bin/native-image \ - -jar $JAR \ - -H:Name=pod-babashka-hsqldb \ - -H:+ReportExceptionStackTraces \ - -J-Dclojure.spec.skip-macros=true \ - -J-Dclojure.compiler.direct-linking=true \ - "-H:IncludeResources=SCI_VERSION" \ - -H:ReflectionConfigurationFiles=reflection.json \ - --initialize-at-run-time=java.lang.Math\$RandomNumberGeneratorHolder \ - --initialize-at-build-time \ - -H:Log=registerResource: \ - --verbose \ - --no-fallback \ - --no-server \ - --report-unsupported-elements-at-runtime \ - "-H:IncludeResources=org/hsqldb/.*\.properties" "-H:IncludeResources=org/hsqldb/.*\.sql" \ - "-J-Xmx4500m" diff --git a/examples/pods/pod-babashka-hsqldb/pod-babashka-hsqldb b/examples/pods/pod-babashka-hsqldb/pod-babashka-hsqldb deleted file mode 100755 index 1a51018f..00000000 Binary files a/examples/pods/pod-babashka-hsqldb/pod-babashka-hsqldb and /dev/null differ diff --git a/examples/pods/pod-babashka-hsqldb/project.clj b/examples/pods/pod-babashka-hsqldb/project.clj deleted file mode 100644 index adf72ecf..00000000 --- a/examples/pods/pod-babashka-hsqldb/project.clj +++ /dev/null @@ -1,22 +0,0 @@ -(defproject org.babashka/pod-babashka-hsqldb "0.0.1-SNAPSHOT" - :description "babashka" - :url "https://github.com/borkdude/babashka" - :scm {:name "git" - :url "https://github.com/borkdude/babashka"} - :license {:name "Eclipse Public License 1.0" - :url "http://opensource.org/licenses/eclipse-1.0.php"} - :source-paths ["src"] - :resource-paths ["resources"] - :dependencies [[org.clojure/clojure "1.10.2-alpha1"] - [org.hsqldb/hsqldb "2.4.0"] - [seancorfield/next.jdbc "1.0.424"] - [nrepl/bencode "1.1.0"]] - :profiles {:uberjar {:global-vars {*assert* false} - :jvm-opts ["-Dclojure.compiler.direct-linking=true" - "-Dclojure.spec.skip-macros=true"] - :aot :all - :main pod.babashka.hsqldb}} - :deploy-repositories [["clojars" {:url "https://clojars.org/repo" - :username :env/clojars_user - :password :env/clojars_pass - :sign-releases false}]]) diff --git a/examples/pods/pod-babashka-hsqldb/reflection.json b/examples/pods/pod-babashka-hsqldb/reflection.json deleted file mode 100644 index 69c0247f..00000000 --- a/examples/pods/pod-babashka-hsqldb/reflection.json +++ /dev/null @@ -1,15 +0,0 @@ -[ { - "name" : "org.hsqldb.jdbcDriver" -}, - { - "methods" : [{"name":"", "parameterTypes":[ "org.hsqldb.Database"]} ], - "name" : "org.hsqldb.dbinfo.DatabaseInformationFull" - }, - { - "methods" : [ { - "name" : "getBundle", - "parameterTypes" : [ "java.lang.String", "java.util.Locale", "java.lang.ClassLoader" ] - } ], - "name" : "java.util.ResourceBundle" - } -] diff --git a/examples/pods/pod-babashka-hsqldb/src/pod/babashka/hsqldb.clj b/examples/pods/pod-babashka-hsqldb/src/pod/babashka/hsqldb.clj deleted file mode 100644 index 6345ce31..00000000 --- a/examples/pods/pod-babashka-hsqldb/src/pod/babashka/hsqldb.clj +++ /dev/null @@ -1,51 +0,0 @@ -(ns pod.babashka.hsqldb - (:refer-clojure :exclude [read read-string]) - (:require [bencode.core :as bencode] - [clojure.edn :as edn] - [next.jdbc :as jdbc]) - (:import [java.io PushbackInputStream]) - (:gen-class)) - -(def stdin (PushbackInputStream. System/in)) - -(def lookup - {'pod.babashka.hsqldb/execute! jdbc/execute!}) - -(defn write [v] - (bencode/write-bencode System/out v) - (.flush System/out)) - -(defn read-string [^"[B" v] - (String. v)) - -(defn read [] - (bencode/read-bencode stdin)) - -(defn -main [& _args] - (loop [] - (let [message (try (read) - (catch java.io.EOFException _ - ::EOF))] - (when-not (identical? ::EOF message) - (let [op (get message "op") - op (read-string op) - op (keyword op)] - (case op - :describe (do (write {"format" "edn" - "namespaces" [{"name" "pod.babashka.hsqldb" - "vars" [{"name" "execute!"}]}] - "ops" {"shutdown" {}}}) - (recur)) - :invoke (let [var (-> (get message "var") - read-string - symbol) - id (-> (get message "id") - read-string) - args (get message "args") - args (read-string args) - args (edn/read-string args)] - (write {"value" (pr-str (apply (lookup var) args)) - "id" id - "status" ["done"]}) - (recur)) - :shutdown (System/exit 0))))))) diff --git a/examples/pods/pod-babashka-hsqldb/test.clj b/examples/pods/pod-babashka-hsqldb/test.clj deleted file mode 100644 index ffc759a5..00000000 --- a/examples/pods/pod-babashka-hsqldb/test.clj +++ /dev/null @@ -1,45 +0,0 @@ -(ns test - (:refer-clojure :exclude [read]) - (:require [bencode.core :as bencode] - [clojure.edn :as edn]) - #_(:import java.lang.ProcessBuilder$Redirect)) - -(defn write [stream v] - (bencode/write-bencode stream v) - (.flush stream)) - -(defn read [stream] - (bencode/read-bencode stream)) - -(defn bytes->string [^"[B" bytes] - (String. bytes)) - -(defn query [stream q] - (write stream {"op" "invoke" - "id" "1" - "var" "pod.babashka.hsqldb/execute!" - "args" (pr-str ["jdbc:hsqldb:mem:testdb;sql.syntax_mys=true" q])})) - -(let [pb (ProcessBuilder. #_["lein" "run" "-m" "pod.babashka.hsqldb"] - ["./pod-babashka-hsqldb"]) - _ (.redirectErrorStream pb true) - ;; _ (.redirectOutput pb ProcessBuilder$Redirect/INHERIT) - p (.start pb) - stdin (.getOutputStream p) - stdout (.getInputStream p) - stdout (java.io.PushbackInputStream. stdout)] - (write stdin {"op" "describe"}) - (let [reply (read stdout)] - (println "format:" (String. (get reply "format")))) ;;=> edn - - (query stdin ["create table foo ( foo int );"]) - (let [reply (read stdout)] - (println "reply:" (edn/read-string (String. (get reply "value"))))) ;;=> [{:next.jdbc/update-count 0}] - - (query stdin ["insert into foo values ( 1, 2, 3);"]) - (let [reply (read stdout)] - (println "reply:" (edn/read-string (String. (get reply "value"))))) ;;=> [{:next.jdbc/update-count 3}] - - (query stdin ["select * from foo;"]) - (let [reply (read stdout)] - (println "reply:" (edn/read-string (String. (get reply "value")))))) ;=> [{:FOO/FOO 1} {:FOO/FOO 2} {:FOO/FOO 3}]