The central place to register babashka pods for easy usage with babashka.
Registered pods can be loaded using a qualified symbol and a version string:
(require '[babashka.pods :as pods])
(pods/load-pod 'org.babashka/buddy "0.1.0")
From then on, a pod exposes namespaces which can be called like regular Clojure:
(require '[pod.babashka.buddy.core.hash :as hash])
(hash/md5 "foo")
Pod | Description | Latest version | Example | Language |
---|---|---|---|---|
atomisthq/tools.docker | docker golang utils for clojure | 0.1.0 | link | |
borkdude/clj-kondo | A static analyzer and linter for Clojure code that sparks joy | 2024.09.27 | link | |
com.fluree/crypto | A Clojure(Script) crypto library for the Fluree graph database | 0.1.2 | link | |
com.github.clojure-lsp/clojure-lsp | 2024.04.22-11.50.26 | null | ||
com.github.jackdbd/pod.jackdbd.jsoup | Babashka pod for parsing HTML with jsoup. | 0.4.0 | link | |
epiccastle/bbssh | SSH remote execution and file copy | 0.6.0 | link | |
epiccastle/spire | Pragmatic idempotent machine provisioning over SSH (mac and linux only) | 0.1.2 | link | |
huahaiy/datalevin | Datalevin Database | 0.9.11 | link | |
justone/brisk | Freeze and thaw with Nippy at the command line | 0.3.0 | link | |
justone/tabl | Make tables from data in your terminal | 0.3.0 | link | |
lispyclouds/docker | A babashka pod for interacting with docker via clj-docker-client | 0.1.1 | link | |
org.babashka/aws | AWS client based on aws-api | 0.1.2 | link | |
org.babashka/buddy | Cryptographic API provided by buddy | 0.3.4 | link | |
org.babashka/etaoin | Etaoin, a pure Clojure webdriver protocol implementation | 0.1.0 | link | |
org.babashka/filewatcher | Filewatcher based on Rust notify | 0.0.1 | link | |
org.babashka/fswatcher | Filewatcher based on Go fsnotify | 0.0.5 | link | |
org.babashka/go-sqlite3 | Interact with sqlite3 | 0.2.4 | link | |
org.babashka/hsqldb | HSQLDB access via next.jdbc | 0.1.2 | link | |
org.babashka/instaparse | Instaparse pod | 0.0.4 | link | |
org.babashka/lanterna | A Clojurey wrapper around the Lanterna terminal output library. | 0.0.1 | link | |
org.babashka/mssql | MSSQL access via next.jdbc | 0.1.2 | link | |
org.babashka/mysql | MySQL access via next.jdbc | 0.1.2 | link | |
org.babashka/oracle | Oracle access via next.jdbc | 0.1.0 | ||
org.babashka/parcera | Grammar-based Clojure(script) parser | 0.0.1 | link | |
org.babashka/postgresql | Postgresql access via next.jdbc | 0.1.2 | link | |
org.babashka/tools-deps-native | Tools deps alpha as a pod | 0.1.6 | link | |
retrogradeorbit/bootleg | Template processing command line tool to help build static websites. Inbuilt support for html, hiccup, hickory, selmer, mustache, markdown, enlive, json, yaml and edn. | 0.1.9 | link | |
rorokimdim/stash | Encrypted text storage | 0.3.4 | link | |
tommy-mor/go-valve-query | query/rcon valve source engine servers | 0.1.1 | ||
tzzh/aws | Interact with AWS | 0.0.3 | link | |
tzzh/mail | Send emails | 0.0.3 | link |
To register a pod, create a nested directory in manifests
with the following structure:
<org>/<pod-name>/<version>
and add a manifest.edn
file like the following example:
{:pod/name tzzh/mail
:pod/description "Send emails"
:pod/version "0.0.2"
:pod/license ""
:pod/example "https://raw.githubusercontent.com/babashka/pod-registry/master/examples/tzzh_mail.clj"
:pod/language "go"
:pod/artifacts
[{:os/name "Linux.*"
:os/arch "amd64"
:artifact/url "https://github.com/tzzh/pod-tzzh-mail/releases/download/v0.0.2/pod-tzzh-mail_0.0.2_Linux_x86_64.zip"
:artifact/executable "pod-tzzh-mail"}
{:os/name "Mac.*"
:os/arch "x86_64"
:artifact/url "https://github.com/tzzh/pod-tzzh-mail/releases/download/v0.0.2/pod-tzzh-mail_0.0.2_Darwin_x86_64.zip"
:artifact/executable "pod-tzzh-mail"}
{:os/name "Windows.*"
:os/arch "amd64"
:artifact/url "https://github.com/tzzh/pod-tzzh-mail/releases/download/v0.0.2/pod-tzzh-mail_0.0.2_Windows_x86_64.zip"
:artifact/executable "pod-tzzh-mail.exe"}]}
The required fields are :pod/name
, :pod/version
and :pod/artifacts
. For the sake of programmatical integrity you can populate :pod/description
, :pod/example
(with a link) and :pod/language
fields as well.
You can then load the pod in your babashka script as follows:
(require '[babashka.pods :as pods])
(pods/load-pod 'tzzh/mail "0.0.2")
(require '[pod.tzzh.mail :as m])
(m/send-mail ...)
The :pod/artifacts
vector will be matched in order on operating system and
architecture. For the first match, the :artifact/url
, a zip file, will be
downloaded and extracted. After extraction there should be a file with the same
name as :artifact/executable
which will be made executable and invoked as the
pod.