diff options
Diffstat (limited to 'datomic-pro-1.0.7469/bin/shell.clj')
| -rw-r--r-- | datomic-pro-1.0.7469/bin/shell.clj | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/datomic-pro-1.0.7469/bin/shell.clj b/datomic-pro-1.0.7469/bin/shell.clj new file mode 100644 index 0000000..0686284 --- /dev/null +++ b/datomic-pro-1.0.7469/bin/shell.clj @@ -0,0 +1,52 @@ +;; Copyright (c) Metadata Partners, LLC. +;; All rights reserved. + +(import 'bsh.Interpreter) +(import 'java.io.InputStreamReader) + +(require '[clojure.string :as str] + '[datomic.slf4j.bridge :as bridge]) + +(bridge/install) + +;; make an interpreter wired to console +(def in (InputStreamReader. System/in)) +(def out (System/out)) +(def err (System/err)) + +(def bsh (Interpreter. in out err true)) + +;; import API and keyword constants +(.eval bsh "import datomic.Entity;") +(.eval bsh "import datomic.Connection;") +(.eval bsh "import datomic.Database;") +(.eval bsh "import datomic.Datom;") +(.eval bsh "import datomic.Peer;") +(.eval bsh "import datomic.TxReport;") +(.eval bsh "import datomic.Util;") +(.eval bsh "import datomic.impl.Shell;") +(.eval bsh "import java.io.*;") +(.eval bsh "import java.util.*;") + +;;(.eval bsh "pause() { System.out.println(\"Press enter to continue...\"); (new java.util.Scanner).nextLine(); };") + +(if *command-line-args* + ;; run script file + (do + (let [script (first *command-line-args*) + args (to-array (rest *command-line-args*))] + (.set bsh "args" args) + (.source bsh script))) + ;; run interactive + (do + ;; setup banner and prompt + (.eval bsh "printBanner() { print(\"Datomic Java Shell\"); print (\"Type Shell.help(); for help.\");}") + (.eval bsh "getBshPrompt() { return \"datomic % \"; }") + ;; turn on show so results are visible w/o print + (.setShowResults bsh true) + ;; start Datomic loading + (future (require 'datomic.peer)) + ;; let it run + (.run bsh))) + + |
