diff --git a/src/babashka/impl/transit.clj b/feature-transit/babashka/impl/transit.clj similarity index 100% rename from src/babashka/impl/transit.clj rename to feature-transit/babashka/impl/transit.clj diff --git a/project.clj b/project.clj index f5da09e5..728da5ed 100644 --- a/project.clj +++ b/project.clj @@ -18,8 +18,7 @@ [borkdude/sci.impl.reflector "0.0.1"] [org.clojure/tools.cli "1.0.194"] [cheshire "5.10.0"] - [fipp "0.6.22"] - [com.cognitect/transit-clj "1.0.324"]] + [fipp "0.6.22"]] :profiles {:feature/xml {:source-paths ["feature-xml"] :dependencies [[org.clojure/data.xml "0.2.0-alpha6"]]} :feature/yaml {:source-paths ["feature-yaml"] @@ -32,12 +31,15 @@ :dependencies [[org.clojure/core.async "1.1.587"]]} :feature/csv {:source-paths ["feature-csv"] :dependencies [[org.clojure/data.csv "1.0.0"]]} + :feature/transit {:source-paths ["feature-transit"] + :dependencies [[com.cognitect/transit-clj "1.0.324"]]} :test [:feature/xml :feature/yaml :feature/postgresql :feature/hsqldb :feature/core-async :feature/csv + :feature/transit {:dependencies [[clj-commons/conch "0.9.2"] [com.clojure-goes-fast/clj-async-profiler "0.4.1"]]}] :uberjar {:global-vars {*assert* false} diff --git a/script/uberjar b/script/uberjar index 67e4c031..01ab463a 100755 --- a/script/uberjar +++ b/script/uberjar @@ -53,6 +53,13 @@ else BABASHKA_LEIN_PROFILES+=",-feature/csv" fi +if [ "$BABASHKA_FEATURE_TRANSIT" != "false" ] +then + BABASHKA_LEIN_PROFILES+=",+feature/transit" +else + BABASHKA_LEIN_PROFILES+=",-feature/transit" +fi + if [ -z "$BABASHKA_JAR" ]; then lein with-profiles "$BABASHKA_LEIN_PROFILES,+reflection,-uberjar" do run lein with-profiles "$BABASHKA_LEIN_PROFILES" do clean, uberjar diff --git a/script/uberjar.bat b/script/uberjar.bat index 8fec0fe2..1582ea5f 100755 --- a/script/uberjar.bat +++ b/script/uberjar.bat @@ -52,6 +52,12 @@ if not "%BABASHKA_FEATURE_CSV%"=="false" ( set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,-feature/csv ) +if not "%BABASHKA_FEATURE_TRANSIT%"=="false" ( + set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,+feature/transit +) else ( + set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,-feature/transit +) + call lein with-profiles %BABASHKA_LEIN_PROFILES% bb "(+ 1 2 3)" call lein with-profiles %BABASHKA_LEIN_PROFILES%,+reflection,-uberjar do run diff --git a/src/babashka/impl/features.clj b/src/babashka/impl/features.clj index e681ecfb..7abaf507 100644 --- a/src/babashka/impl/features.clj +++ b/src/babashka/impl/features.clj @@ -6,6 +6,7 @@ (def xml? (not= "false" (System/getenv "BABASHKA_FEATURE_XML"))) (def core-async? (not= "false" (System/getenv "BABASHKA_FEATURE_CORE_ASYNC"))) (def csv? (not= "false" (System/getenv "BABASHKA_FEATURE_CSV"))) +(def transit? (not= "false" (System/getenv "BABASHKA_FEATURE_TRANSIT"))) ;; excluded by default (def jdbc? (= "true" (System/getenv "BABASHKA_FEATURE_JDBC"))) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 5508305b..39b88922 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -19,7 +19,6 @@ [babashka.impl.socket-repl :as socket-repl] [babashka.impl.test :as t] [babashka.impl.tools.cli :refer [tools-cli-namespace]] - [babashka.impl.transit :refer [transit-namespace]] [babashka.wait :as wait] [clojure.edn :as edn] [clojure.java.io :as io] @@ -68,6 +67,9 @@ (when features/csv? (require '[babashka.impl.csv])) +(when features/transit? + (require '[babashka.impl.transit])) + (binding [*unrestricted* true] (sci/alter-var-root sci/in (constantly *in*)) (sci/alter-var-root sci/out (constantly *out*)) @@ -283,13 +285,13 @@ Everything after that is bound to *command-line-args*.")) io clojure.java.io json cheshire.core curl babashka.curl - transit cognitect.transit bencode bencode.core} features/xml? (assoc 'xml 'clojure.data.xml) features/yaml? (assoc 'yaml 'clj-yaml.core) features/jdbc? (assoc 'jdbc 'next.jdbc) features/core-async? (assoc 'async 'clojure.core.async) - features/csv? (assoc 'csv 'clojure.data.csv))) + features/csv? (assoc 'csv 'clojure.data.csv) + features/transit? (assoc 'transit 'cognitect.transit))) (def cp-state (atom nil)) @@ -319,7 +321,6 @@ Everything after that is bound to *command-line-args*.")) 'babashka.classpath {'add-classpath add-classpath*} 'clojure.pprint pprint-namespace 'babashka.curl curl-namespace - 'cognitect.transit transit-namespace 'bencode.core bencode-namespace} features/xml? (assoc 'clojure.data.xml @(resolve 'babashka.impl.xml/xml-namespace)) features/yaml? (assoc 'clj-yaml.core @(resolve 'babashka.impl.yaml/yaml-namespace)) @@ -327,7 +328,8 @@ Everything after that is bound to *command-line-args*.")) 'next.jdbc.sql @(resolve 'babashka.impl.jdbc/next-sql-namespace)) features/core-async? (assoc 'clojure.core.async @(resolve 'babashka.impl.async/async-namespace) 'clojure.core.async.impl.protocols @(resolve 'babashka.impl.async/async-protocols-namespace)) - features/csv? (assoc 'clojure.data.csv @(resolve 'babashka.impl.csv/csv-namespace)))) + features/csv? (assoc 'clojure.data.csv @(resolve 'babashka.impl.csv/csv-namespace)) + features/transit? (assoc 'cognitect.transit @(resolve 'babashka.impl.transit/transit-namespace)))) (def bindings {'java.lang.System/exit exit ;; override exit, so we have more control