Native, fast starting Clojure interpreter for scripting
Find a file
2019-08-09 15:43:27 +02:00
.circleci initial commit 2019-08-09 15:43:27 +02:00
.clj-kondo initial commit 2019-08-09 15:43:27 +02:00
doc initial commit 2019-08-09 15:43:27 +02:00
resources initial commit 2019-08-09 15:43:27 +02:00
script initial commit 2019-08-09 15:43:27 +02:00
src/babashka initial commit 2019-08-09 15:43:27 +02:00
test/babashka initial commit 2019-08-09 15:43:27 +02:00
.gitignore initial commit 2019-08-09 15:43:27 +02:00
LICENSE initial commit 2019-08-09 15:43:27 +02:00
project.clj initial commit 2019-08-09 15:43:27 +02:00
README.md initial commit 2019-08-09 15:43:27 +02:00
reflection.json initial commit 2019-08-09 15:43:27 +02:00

babashka

CircleCI Clojars Project cljdoc badge

An extremely limited version of Clojure in Clojure for shell-scripting.

Properties:

  • pure (no side effects)
  • interprets only one form
  • reads from stdin and writes to stdout

Status

Experimental, mostly for fun.

Usage

bb supports the following options:

  • --version: if present, prints current version of bb and exits.

By default, the first argument to bb is the form to be executed. There is one special variable, *in*.

Examples:

$ echo 1 | bb '(inc *in*)'
2

$ echo '[1 1 1 1 2]' | bb '(vec (dedupe *in*))'
[1 2]

$ echo '[1 1 1 1 2]' | bb '(inc (first *in*))'
2

$ echo '[{:foo 1} {:bar 2}]' | bb '(filter :foo *in*)'
({:foo 1})

$ echo '"babashka"' | bb '(re-find (re-pattern "b.b.*") *in*)'
"babashka"

Test

Test the JVM version:

script/test

Test the native version:

BABASHKA_TEST_ENV=native script/test

Build

You will need leiningen and GraalVM.

script/compile

License

Copyright © 2019 Michiel Borkent

Distributed under the EPL License, same as Clojure. See LICENSE.