Slide 1

Slide 1 text

Tasks Michiel Borkent @borkdude 2021-07-20

Slide 2

Slide 2 text

• Native Clojure scripting tool, single binary, no JVM • Developed since August 2019 (2000+ stars, 68 contributors) • Can be used to replace “the grey areas” of bash • Installable via script, brew (macOS, linux), aur (linux), scoop (Windows) $ time bb -e '(+ 1 2 3)'
 6
 0.00s user 0.00s system 67% cpu 0.013 total

Slide 3

Slide 3 text

Make, just, etc. • Complex project-specific CLI invocations • Remember • Shortcuts • Discoverability • Fast startup • Only rebuild when necessary (make) • Clojure...?

Slide 4

Slide 4 text

Babashka tasks $ bb run clean
 # or
 $ bb clean

Slide 5

Slide 5 text

Use any bb compatible lib $ bb clean

Slide 6

Slide 6 text

Arbitrary (EDN compatible) expressions $ bb clean
 Removing target folder.

Slide 7

Slide 7 text

bb run options: --parallel $ bb run --parallel d
 d: #inst "2021-05-08T14:14:56.322-00:00"
 a: #inst "2021-05-08T14:14:56.357-00:00"
 b: #inst "2021-05-08T14:14:56.360-00:00"
 c: #inst "2021-05-08T14:15:01.366-00:00"
 "Elapsed time: 5023.894512 msecs"

Slide 8

Slide 8 text

bb run options: --prn

Slide 9

Slide 9 text

Hooks: :init

Slide 10

Slide 10 text

Hooks: :enter, :leave

Slide 11

Slide 11 text

Command line args • Just use *command-line-args*, bb leaves it unprocessed. • To pass args from a task to another task, use binding + run

Slide 12

Slide 12 text

Task-local options

Slide 13

Slide 13 text

Discoverability

Slide 14

Slide 14 text

Tasks API: run, clojure, shell

Slide 15

Slide 15 text

Tasks API: run, clojure, shell

Slide 16

Slide 16 text

Tasks API: run, clojure, shell

Slide 17

Slide 17 text

Tasks API: run, clojure, shell

Slide 18

Slide 18 text

Dependencies

Slide 19

Slide 19 text

Rebuild when necessary

Slide 20

Slide 20 text

Dependencies (parallel) $ bb coffeep (1168ms)
 $ bb run --parallel coffeep (654ms)

Slide 21

Slide 21 text

Dependencies (parallel)

Slide 22

Slide 22 text

Invoking a main function

Slide 23

Slide 23 text

Real examples • clj-kondo.lsp • bb.edn at Doctor Evidence • rewrite-clj • More links in docs

Slide 24

Slide 24 text

Docs https://book.babashka.org/#tasks

Slide 25

Slide 25 text

Babashka tasks • Complex project-specific CLI invocations • Remember • Shortcuts • Discoverability • Fast startup • Only rebuild when necessary • Clojure!

Slide 26

Slide 26 text

Thanks to sponsors! https://opencollective.com/babashka/contribute https://github.com/sponsors/borkdude

Slide 27

Slide 27 text

Thanks Michiel Borkent @borkdude 2021-07-20