1.4 KiB
1.4 KiB
babashka
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 ofbband 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.