[#561] Add org.httpkit.client namespace

This also bumps GraalVM to 20.2.0 and XCode to version 12
This commit is contained in:
Michiel Borkent 2020-09-18 21:32:08 +02:00 committed by GitHub
parent 51dca73030
commit f89da080c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 148 additions and 73 deletions

View file

@ -70,7 +70,7 @@ jobs:
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-20.1.0
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-20.2.0
BABASHKA_PLATFORM: linux # used in release script
BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m"
@ -104,9 +104,9 @@ jobs:
name: Download GraalVM
command: |
cd ~
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
if ! [ -d graalvm-ce-java11-20.2.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
fi
- run:
name: Build binary
@ -126,7 +126,7 @@ jobs:
- save_cache:
paths:
- ~/.m2
- ~/graalvm-ce-java11-20.1.0
- ~/graalvm-ce-java11-20.2.0
key: linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
@ -141,7 +141,7 @@ jobs:
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-20.1.0
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-20.2.0
BABASHKA_PLATFORM: linux-static # used in release script
BABASHKA_TEST_ENV: native
BABASHKA_STATIC: true
@ -176,9 +176,9 @@ jobs:
name: Download GraalVM
command: |
cd ~
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
if ! [ -d graalvm-ce-java11-20.2.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
fi
- run:
name: Build binary
@ -198,7 +198,7 @@ jobs:
- save_cache:
paths:
- ~/.m2
- ~/graalvm-ce-java11-20.1.0
- ~/graalvm-ce-java11-20.2.0
key: linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
@ -209,9 +209,9 @@ jobs:
./bb .circleci/script/publish_artifact.clj
mac:
macos:
xcode: "9.4.1"
xcode: "12.0.0"
environment:
GRAALVM_HOME: /Users/distiller/graalvm-ce-java11-20.1.0/Contents/Home
GRAALVM_HOME: /Users/distiller/graalvm-ce-java11-20.2.0/Contents/Home
BABASHKA_PLATFORM: macos # used in release script
BABASHKA_TEST_ENV: native
BABASHKA_XMX: "-J-Xmx6500m"
@ -239,9 +239,9 @@ jobs:
command: |
cd ~
ls -la
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz
if ! [ -d graalvm-ce-java11-20.2.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-darwin-amd64-20.2.0.tar.gz
tar xzf graalvm-ce-java11-darwin-amd64-20.2.0.tar.gz
fi
- run:
name: Build binary
@ -263,7 +263,7 @@ jobs:
- save_cache:
paths:
- ~/.m2
- ~/graalvm-ce-java11-20.1.0
- ~/graalvm-ce-java11-20.2.0
key: mac-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release

View file

@ -44,17 +44,17 @@ jobs:
uses: actions/cache@v1
id: cache-graalvm
with:
path: ~/graalvm-ce-java11-20.1.0
key: ${{ runner.os }}-graalvm-20.1.0
path: ~/graalvm-ce-java11-20.2.0
key: ${{ runner.os }}-graalvm-20.2.0
restore-keys: |
${{ runner.os }}-graalvm-20.1.0
${{ runner.os }}-graalvm-20.2.0
- name: Download GraalVM
run: |
cd ~
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
if ! [ -d graalvm-ce-java11-20.2.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
fi
- name: Fetch deps
@ -64,18 +64,18 @@ jobs:
- name: Run tests
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
script/test
- name: Test libraries
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
sudo script/install-clojure
script/run_lib_tests
- name: Build uberjar
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
script/uberjar
- name: Babashka version
@ -132,17 +132,17 @@ jobs:
uses: actions/cache@v1
id: cache-graalvm
with:
path: ~/graalvm-ce-java11-20.1.0
key: ${{ runner.os }}-graalvm-20.1.0
path: ~/graalvm-ce-java11-20.2.0
key: ${{ runner.os }}-graalvm-20.2.0
restore-keys: |
${{ runner.os }}-graalvm-20.1.0
${{ runner.os }}-graalvm-20.2.0
- name: Download GraalVM
run: |
cd ~
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
if ! [ -d graalvm-ce-java11-20.2.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
fi
- name: Babashka version
@ -155,13 +155,13 @@ jobs:
run: |
export BABASHKA_JAR=babashka-${{ steps.babashka-version.outputs.version }}-standalone.jar
export BABASHKA_XMX="-J-Xmx6g"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
cp babashka-${{ steps.babashka-version.outputs.version }}-reflection.json reflection.json
script/compile
- name: Test binary
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
BABASHKA_TEST_ENV=native script/test
- name: Install clojure
@ -170,7 +170,7 @@ jobs:
- name: Test libraries
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
BABASHKA_TEST_ENV=native script/run_lib_tests
- uses: actions/upload-artifact@v1
@ -212,17 +212,17 @@ jobs:
uses: actions/cache@v1
id: cache-graalvm
with:
path: ~/graalvm-ce-java11-20.1.0
key: ${{ runner.os }}-graalvm-20.1.0
path: ~/graalvm-ce-java11-20.2.0
key: ${{ runner.os }}-graalvm-20.2.0
restore-keys: |
${{ runner.os }}-graalvm-20.1.0
${{ runner.os }}-graalvm-20.2.0
- name: Download GraalVM
run: |
cd ~
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
if ! [ -d graalvm-ce-java11-20.2.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
fi
- name: Babashka version
@ -235,7 +235,7 @@ jobs:
run: |
export BABASHKA_JAR=babashka-${{ steps.babashka-version.outputs.version }}-standalone.jar
export BABASHKA_XMX="-J-Xmx6g"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
export BABASHKA_STATIC=true
cp babashka-${{ steps.babashka-version.outputs.version }}-reflection.json reflection.json
script/compile
@ -243,7 +243,7 @@ jobs:
- name: Test binary
run: |
./bb '(+ 1 2 3)'
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
BABASHKA_TEST_ENV=native script/test
- name: Install clojure
@ -252,7 +252,7 @@ jobs:
- name: Test libraries
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0"
BABASHKA_TEST_ENV=native script/run_lib_tests
- uses: actions/upload-artifact@v1
@ -285,17 +285,17 @@ jobs:
uses: actions/cache@v1
id: cache-graalvm
with:
path: ~/graalvm-ce-java11-20.1.0
key: ${{ runner.os }}-graalvm-20.1.0
path: ~/graalvm-ce-java11-20.2.0
key: ${{ runner.os }}-graalvm-20.2.0
restore-keys: |
${{ runner.os }}-graalvm-20.1.0
${{ runner.os }}-graalvm-20.2.0
- name: Download GraalVM
run: |
cd ~
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz
if ! [ -d graalvm-ce-java11-20.2.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-darwin-amd64-20.2.0.tar.gz
tar xzf graalvm-ce-java11-darwin-amd64-20.2.0.tar.gz
fi
- name: Babashka version
@ -308,19 +308,19 @@ jobs:
run: |
export BABASHKA_JAR=babashka-${{ steps.babashka-version.outputs.version }}-standalone.jar
export BABASHKA_XMX="-J-Xmx6g"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0/Contents/Home"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0/Contents/Home"
cp babashka-${{ steps.babashka-version.outputs.version }}-reflection.json reflection.json
script/compile
- name: Test binary
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0/Contents/Home"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0/Contents/Home"
sudo script/install-leiningen
BABASHKA_TEST_ENV=native script/test
- name: Test libraries
run: |
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.1.0/Contents/Home"
export GRAALVM_HOME="$HOME/graalvm-ce-java11-20.2.0/Contents/Home"
sudo script/install-clojure
BABASHKA_TEST_ENV=native script/run_lib_tests

View file

@ -4,11 +4,11 @@ ARG BABASHKA_XMX="-J-Xmx3g"
RUN apt update
RUN apt install --no-install-recommends -yy curl unzip build-essential zlib1g-dev
WORKDIR "/opt"
RUN curl -sLO https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
RUN tar -xzf graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
RUN curl -sLO https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
RUN tar -xzf graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
ENV GRAALVM_HOME="/opt/graalvm-ce-java11-20.1.0"
ENV JAVA_HOME="/opt/graalvm-ce-java11-20.1.0/bin"
ENV GRAALVM_HOME="/opt/graalvm-ce-java11-20.2.0"
ENV JAVA_HOME="/opt/graalvm-ce-java11-20.2.0/bin"
ENV PATH="$JAVA_HOME:$PATH"
ENV BABASHKA_STATIC="true"
ENV BABASHKA_XMX=$BABASHKA_XMX

View file

@ -7,7 +7,7 @@ image: Visual Studio 2017
clone_folder: C:\projects\babashka
environment:
GRAALVM_HOME: C:\projects\babashka\graalvm\graalvm-ce-java11-20.1.0
GRAALVM_HOME: C:\projects\babashka\graalvm\graalvm-ce-java11-20.2.0
BABASHKA_XMX: "-J-Xmx5g"
cache:
@ -44,7 +44,7 @@ build_script:
- cmd: >-
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
powershell -Command "if (Test-Path('graalvm')) { return } else { (New-Object Net.WebClient).DownloadFile('https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-windows-amd64-20.1.0.zip', 'graalvm.zip') }"
powershell -Command "if (Test-Path('graalvm')) { return } else { (New-Object Net.WebClient).DownloadFile('https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-windows-amd64-20.2.0.zip', 'graalvm.zip') }"
powershell -Command "if (Test-Path('graalvm')) { return } else { Expand-Archive graalvm.zip graalvm }"

View file

@ -1,6 +1,7 @@
{:paths ["src" "feature-xml" "feature-core-async"
"feature-yaml" "feature-csv" "feature-transit"
"feature-java-time" "feature-java-nio"
"feature-httpkit-client"
"sci/src" "babashka.curl/src" "babashka.pods/src"
"babashka.nrepl/src"
"depstar/src"
@ -22,7 +23,8 @@
seancorfield/next.jdbc {:mvn/version "1.0.424"}
org.postgresql/postgresql {:mvn/version "42.2.12"}
org.hsqldb/hsqldb {:mvn/version "2.4.0"}
datascript/datascript {:mvn/version "0.18.11"}}
datascript/datascript {:mvn/version "0.18.11"}
http-kit/http-kit {:mvn/version "2.5.0"}}
:aliases {:main
{:main-opts ["-m" "babashka.main"]}
:profile

View file

@ -1,6 +1,6 @@
# Developing Babashka
You need [lein](https://leiningen.org/) for running JVM tests and/or producing uberjars. For building binaries you need GraalVM. Currently we use java11-20.1.0.
You need [lein](https://leiningen.org/) for running JVM tests and/or producing uberjars. For building binaries you need GraalVM. Currently we use java11-20.2.0.
## Clone repository

View file

@ -0,0 +1,44 @@
(ns babashka.impl.httpkit-client
{:no-doc true}
(:require [org.httpkit.client :as client]
[org.httpkit.sni-client :as sni-client]
[sci.core :as sci :refer [copy-var]]))
(def sni-client (delay (client/make-client {:ssl-configurer sni-client/ssl-configurer})))
(def sns (sci/create-ns 'org.httpkit.server nil))
(def cns (sci/create-ns 'org.httpkit.client nil))
(def default-client (sci/new-dynamic-var '*default-client* sni-client {:ns cns}))
(defn request
([req]
(binding [client/*default-client* @default-client]
(client/request req)))
([req cb]
(binding [client/*default-client* @default-client]
(client/request req cb))))
(def httpkit-client-namespace
{'request (sci/new-var 'request request {:doc (:doc (meta #'client/request))
:ns cns})
'get (copy-var client/get cns)
'options (copy-var client/options cns)
'put (copy-var client/put cns)
'lock (copy-var client/lock cns)
'report (copy-var client/report cns)
'proppatch (copy-var client/proppatch cns)
'copy (copy-var client/copy cns)
'patch (copy-var client/patch cns)
'make-ssl-engine (copy-var client/make-ssl-engine cns)
'move (copy-var client/move cns)
'delete (copy-var client/delete cns)
'make-client (copy-var client/make-client cns)
'head (copy-var client/head cns)
'propfind (copy-var client/propfind cns)
'max-body-filter (copy-var client/max-body-filter cns)
'post (copy-var client/post cns)
'acl (copy-var client/acl cns)
'unlock (copy-var client/unlock cns)
'default-client (copy-var client/default-client cns)
'*default-client* default-client})

View file

@ -38,6 +38,10 @@
:dependencies [[com.cognitect/transit-clj "1.0.324"]]}
:feature/datascript {:source-paths ["feature-datascript"]
:dependencies [[datascript "0.18.11"]]}
:feature/httpkit-client {:source-paths ["feature-httpkit-client"]
:dependencies [[http-kit "2.5.0"]]}
:feature/httpkit-server {:source-paths ["feature-httpkit-server"]
:dependencies [[http-kit "2.5.0"]]}
:test [:feature/xml
:feature/yaml
:feature/postgresql
@ -46,6 +50,8 @@
:feature/csv
:feature/transit
:feature/datascript
:feature/httpkit-client
:feature/httpkit-server
{:dependencies [[clj-commons/conch "0.9.2"]
[com.clojure-goes-fast/clj-async-profiler "0.4.1"]
[com.opentable.components/otj-pg-embedded "0.13.3"]]}]
@ -54,7 +60,7 @@
"-Dclojure.spec.skip-macros=true"]
:main babashka.main
:aot :all}
:native-image {:dependencies [[borkdude/clj-reflector-graal-java11-fix "0.0.1-graalvm-20.1.0"]]}
:native-image {:dependencies [[borkdude/clj-reflector-graal-java11-fix "0.0.1-graalvm-20.2.0"]]}
:reflection {:main babashka.impl.classes/generate-reflection-file}}
:aliases {"bb" ["with-profile" "test" "run" "-m" "babashka.main"]}
:deploy-repositories [["clojars" {:url "https://clojars.org/repo"

View file

@ -41,7 +41,8 @@
"doc/dev.md"
".github/workflows/build.yml"
".circleci/config.yml"
"appveyor.yml"])
"appveyor.yml"
"project.clj"])
;; We might have to keep changing these from
;; time to time whenever the version is bumped
@ -51,7 +52,7 @@
;; We could have them as environment variables
(def current-graal-version "20.1.0")
(def current-java-version "java11")
(def valid-graal-bumps ["19.3.2" "20.1.0"])
(def valid-graal-bumps ["19.3.2" "20.1.0" "20.2.0"])
(def valid-java-bumps ["java8" "java11"])
(def cl-options

View file

@ -82,6 +82,7 @@ then
export BABAHSKA_FEATURE_TRANSIT=false
export BABASHKA_FEATURE_JAVA_TIME=false
export BABASHKA_FEATURE_JAVA_NIO=false
export BABASHKA_FEATURE_HTTPKIT_CLIENT=false
fi
"$GRAALVM_HOME/bin/native-image" "${args[@]}"

View file

@ -22,6 +22,7 @@ then
export BABAHSKA_FEATURE_TRANSIT=false
export BABASHKA_FEATURE_JAVA_TIME=false
export BABASHKA_FEATURE_JAVA_NIO=false
export BABASHKA_FEATURE_HTTPKIT_CLIENT=false
fi
BABASHKA_LEIN_PROFILES="+uberjar"
@ -89,6 +90,13 @@ else
BABASHKA_LEIN_PROFILES+=",-feature/datascript"
fi
if [ "$BABASHKA_FEATURE_HTTPKIT_CLIENT" != "false" ]
then
BABASHKA_LEIN_PROFILES+=",+feature/httpkit-client"
else
BABASHKA_LEIN_PROFILES+=",-feature/httpkit-client"
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

View file

@ -64,6 +64,12 @@ if "%BABASHKA_FEATURE_DATASCRIPT%"=="true" (
set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,-feature/datascript
)
if not "%BABASHKA_FEATURE_HTTPKIT_CLIENT%"=="false" (
set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,+feature/httpkit-client
) else (
set BABASHKA_LEIN_PROFILES=%BABASHKA_LEIN_PROFILES%,-feature/httpkit-client
)
call lein with-profiles %BABASHKA_LEIN_PROFILES% bb "(+ 1 2 3)"
call lein with-profiles %BABASHKA_LEIN_PROFILES%,+reflection,-uberjar do run

View file

@ -2,13 +2,14 @@
{:no-doc true})
;; included by default
(def yaml? (not= "false" (System/getenv "BABASHKA_FEATURE_YAML")))
(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")))
(def java-time? (not= "false" (System/getenv "BABASHKA_FEATURE_JAVA_TIME")))
(def java-nio? (not= "false" (System/getenv "BABASHKA_FEATURE_JAVA_NIO")))
(def yaml? (not= "false" (System/getenv "BABASHKA_FEATURE_YAML")))
(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")))
(def java-time? (not= "false" (System/getenv "BABASHKA_FEATURE_JAVA_TIME")))
(def java-nio? (not= "false" (System/getenv "BABASHKA_FEATURE_JAVA_NIO")))
(def httpkit-client? (not= "false" (System/getenv "BABASHKA_FEATURE_HTTPKIT_CLIENT")))
;; excluded by default
(def jdbc? (= "true" (System/getenv "BABASHKA_FEATURE_JDBC")))

View file

@ -81,6 +81,9 @@
(when features/datascript?
(require '[babashka.impl.datascript]))
(when features/httpkit-client?
(require '[babashka.impl.httpkit-client]))
(sci/alter-var-root sci/in (constantly *in*))
(sci/alter-var-root sci/out (constantly *out*))
(sci/alter-var-root sci/err (constantly *err*))
@ -282,7 +285,8 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
:feature/yaml %s
:feature/jdbc %s
:feature/postgresql %s
:feature/hsqldb %s}")
:feature/hsqldb %s
:feature/httpkit-client %s}")
version
features/core-async?
features/csv?
@ -292,7 +296,8 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
features/yaml?
features/jdbc?
features/postgresql?
features/hsqldb?)))
features/hsqldb?
features/httpkit-client?)))
(defn read-file [file]
(let [f (io/file file)]
@ -397,7 +402,8 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
'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/transit? (assoc 'cognitect.transit @(resolve 'babashka.impl.transit/transit-namespace))
features/datascript? (assoc 'datascript.core @(resolve 'babashka.impl.datascript/datascript-namespace))))
features/datascript? (assoc 'datascript.core @(resolve 'babashka.impl.datascript/datascript-namespace))
features/httpkit-client? (assoc 'org.httpkit.client @(resolve 'babashka.impl.httpkit-client/httpkit-client-namespace))))
(def bindings
{'java.lang.System/exit exit ;; override exit, so we have more control