babashka/doc/libraries.md

231 lines
6.7 KiB
Markdown
Raw Normal View History

2020-05-02 20:29:17 +00:00
# Libraries and projects
2020-04-22 09:58:10 +00:00
2020-05-02 20:22:28 +00:00
The following libraries and projects are known to work with babashka.
2020-04-22 09:58:10 +00:00
2020-05-02 20:22:28 +00:00
## Libraries
2020-04-22 10:06:11 +00:00
2020-05-02 20:29:17 +00:00
### [clj-http-lite](https://github.com/borkdude/clj-http-lite)
A fork of a fork of `clj-http-lite`. Example:
``` shell
$ export BABASHKA_CLASSPATH="$(clojure -Sdeps '{:deps {clj-http-lite {:git/url "https://github.com/borkdude/clj-http-lite" :sha "f44ebe45446f0f44f2b73761d102af3da6d0a13e"}}}' -Spath)"
$ bb "(require '[clj-http.lite.client :as client]) (:status (client/get \"https://www.clojure.org\"))"
200
```
2020-04-22 10:11:43 +00:00
### [spartan.spec](https://github.com/borkdude/spartan.spec/)
2020-04-22 09:58:10 +00:00
An babashka-compatible implementation of `clojure.spec.alpha`.
2020-04-22 10:11:43 +00:00
### [missing.test.assertions](https://github.com/borkdude/missing.test.assertions)
2020-04-22 09:58:10 +00:00
This library checks if no assertions have been made in a test:
``` shell
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {borkdude/missing.test.assertions {:git/url "https://github.com/borkdude/missing.test.assertions" :sha "603cb01bee72fb17addacc53c34c85612684ad70"}}}')
$ lein bb "(require '[missing.test.assertions] '[clojure.test :as t]) (t/deftest foo) (t/run-tests)"
Testing user
WARNING: no assertions made in test foo
Ran 1 tests containing 0 assertions.
0 failures, 0 errors.
{:test 1, :pass 0, :fail 0, :error 0, :type :summary}
```
2020-04-22 10:11:43 +00:00
### [medley](https://github.com/weavejester/medley/)
2020-04-22 09:58:10 +00:00
Requires `bb` >= v0.0.71. Latest coordinates checked with with bb:
``` clojure
{:git/url "https://github.com/weavejester/medley" :sha "a4e5fb5383f5c0d83cb2d005181a35b76d8a136d"}
```
Example:
``` shell
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {medley {:git/url "https://github.com/weavejester/medley" :sha "a4e5fb5383f5c0d83cb2d005181a35b76d8a136d"}}}')
$ bb -e "(require '[medley.core :as m]) (m/index-by :id [{:id 1} {:id 2}])"
{1 {:id 1}, 2 {:id 2}}
```
2020-04-22 10:11:43 +00:00
### [limit-break](https://github.com/technomancy/limit-break)
2020-04-22 09:58:10 +00:00
A debug REPL library.
Latest coordinates checked with with bb:
``` clojure
{:git/url "https://github.com/technomancy/limit-break" :sha "050fcfa0ea29fe3340927533a6fa6fffe23bfc2f" :deps/manifest :deps}
```
Example:
``` shell
$ export BABASHKA_CLASSPATH="$(clojure -Sdeps '{:deps {limit-break {:git/url "https://github.com/technomancy/limit-break" :sha "050fcfa0ea29fe3340927533a6fa6fffe23bfc2f" :deps/manifest :deps}}}' -Spath)"
$ bb "(require '[limit.break :as lb]) (let [x 1] (lb/break))"
Babashka v0.0.49 REPL.
Use :repl/quit or :repl/exit to quit the REPL.
Clojure rocks, Bash reaches.
break> x
1
```
2020-04-22 10:11:43 +00:00
### [clojure-csv](https://github.com/davidsantiago/clojure-csv)
2020-04-22 09:58:10 +00:00
A library for reading and writing CSV files. Note that babashka already comes
with `clojure.data.csv`, but in case you need this other library, this is how
you can use it:
``` shell
export BABASHKA_CLASSPATH="$(clojure -Sdeps '{:deps {clojure-csv {:mvn/version "RELEASE"}}}' -Spath)"
./bb -e "
(require '[clojure-csv.core :as csv])
(csv/write-csv (csv/parse-csv \"a,b,c\n1,2,3\"))
"
```
2020-04-22 10:11:43 +00:00
### [regal](https://github.com/lambdaisland/regal)
2020-04-22 09:58:10 +00:00
Requires `bb` >= v0.0.71. Latest coordinates checked with with bb:
``` clojure
{:git/url "https://github.com/lambdaisland/regal" :sha "d4e25e186f7b9705ebb3df6b21c90714d278efb7"}
```
Example:
``` shell
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {regal {:git/url "https://github.com/lambdaisland/regal" :sha "d4e25e186f7b9705ebb3df6b21c90714d278efb7"}}}')
$ bb -e "(require '[lambdaisland.regal :as regal]) (regal/regex [:* \"ab\"])"
#"(?:\Qab\E)*"
```
2020-04-22 10:11:43 +00:00
### [cprop](https://github.com/tolitius/cprop/)
2020-04-22 09:58:10 +00:00
A clojure configuration libary. Latest test version: `"0.1.16"`.
2020-04-22 10:11:43 +00:00
### [comb](https://github.com/weavejester/comb)
2020-04-22 09:58:10 +00:00
Simple templating system for Clojure. Latest tested version: `"0.1.1"`.
``` clojure
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {comb {:mvn/version "0.1.1"}}}')
$ rlwrap bb
...
user=> (require '[comb.template :as template])
user=> (template/eval "<% (dotimes [x 3] %>foo<% ) %>")
"foofoofoo"
user=> (template/eval "Hello <%= name %>" {:name "Alice"})
"Hello Alice"
user=> (def hello (template/fn [name] "Hello <%= name %>"))
user=> (hello "Alice")
"Hello Alice"
```
2020-04-22 10:11:43 +00:00
### [nubank/docopt](https://github.com/nubank/docopt.clj#babashka)
2020-04-22 09:58:10 +00:00
Docopt implementation in Clojure, compatible with babashka.
2020-04-22 10:11:43 +00:00
### [arrangement](https://github.com/greglook/clj-arrangement)
2020-04-22 09:58:10 +00:00
A micro-library which provides a total-ordering comparator for Clojure
values. Tested with version `1.2.0`.
2020-04-22 10:11:43 +00:00
### [clojure.math.combinatorics](https://github.com/clojure/math.combinatorics)
2020-04-22 09:58:10 +00:00
``` clojure
$ bb --classpath "$(clojure -Spath -Sdeps '{:deps {org.clojure/math.combinatorics {:mvn/version "0.1.6"}}}')" \
-e "(use 'clojure.math.combinatorics) (permutations [:a :b])"
((:a :b) (:b :a))
```
2020-04-22 10:11:43 +00:00
### [testdoc](https://github.com/liquidz/testdoc)
2020-04-22 09:58:10 +00:00
Yet another doctest implementation in Clojure.
``` clojure
$ export BABASHKA_CLASSPATH=$(clojure -Sdeps '{:deps {testdoc {:mvn/version "1.2.0"}}}' -Spath)
$ bb '(ns foo (:use clojure.test testdoc.core))
(defn foo "
=> (foo)
:foox"
[] :foo)
(deftest footest
(is (testdoc (var foo))))
(test-var (var footest))'
FAIL in (footest) (:1)
(= (foo) :foox)
expected: :foox
actual: :foo
```
2020-04-30 07:30:59 +00:00
2020-05-02 20:22:28 +00:00
### [doric](https://github.com/joegallo/doric)
Library for printing tables.
``` clojure
$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {doric {:mvn/version "0.9.0"}}}')
$ bb "(use 'doric.core) (println (table [:a :b :c] [{:a 1 :b 2 :c 3} {:a 4 :b 5 :c 6}]))"
|---+---+---|
| A | B | C |
|---+---+---|
| 1 | 2 | 3 |
| 4 | 5 | 6 |
|---+---+---|
```
## Projects
### [deps.clj](https://github.com/borkdude/deps.clj)
A port of the [clojure](https://github.com/clojure/brew-install/) bash script to
Clojure / babashka.
Also see [deps.clj documentation](../doc/deps.clj.md).
### [4bb](https://github.com/porkostomus/4bb)
4clojure as a babashka script!
### [babashka lambda layer](https://github.com/dainiusjocas/babashka-lambda-layer)
Babashka Lambda runtime packaged as a Lambda layer.
### [Release on push Github action](https://github.com/rymndhng/release-on-push-action)
Github Action to create a git tag + release when pushed to master. Written in
babashka.
### [justone/bb-scripts](https://github.com/justone/bb-scripts)
A collection of scripts developed by [@justone](https://github.com/justone).
### [nativity](https://github.com/MnRA/nativity)
Turn babashka scripts into binaries using GraalVM `native-image`.
2020-04-30 07:30:59 +00:00
### [cldwalker/bb-clis](https://github.com/cldwalker/bb-clis)
A collection of scripts developed by [@cldwalker](https://github.com/cldwalker).
2020-05-02 20:33:13 +00:00
### [krell template](https://github.com/ampersanda/krell-template-runner)
Babashka scfript for creating React Native (Krell) project
### [wee-httpd](https://github.com/bherrmann7/bb-common/blob/master/wee_httpd.bb)
A wee multi-threaded web server