Liking cljdoc? Tell your friends :D

babashka

CircleCI Clojars Project cljdoc badge

A pure, fast and limited version of Clojure in Clojure for shell scripting.

Properties:

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

Status

Experimental. Not all Clojure core functions are supported yet, but can be easily added. PRs welcome.

Usage

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

If the first argument is --version, then bb will print the version and exit.

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.

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close