releases 2025-09-19

https://github.com/babashka/pod-babashka-go-sqlite3: A babashka pod for interacting with sqlite3 0.3.10 • Better handle parent process death by handling EOF of stdin

🎉 1

io.github.hlship/cli-tools 0.16.0-beta-1 https://github.com/hlship/cli-tools cli-tools is a complement to Babashka used to create tools with sub-commands, much like Babashka tasks. It is effectively a layer on top of org.clojure/tools.cli. BREAKING CHANGES • Groups are now defined in the options passed to net.lewisship.cli-tools/dispatch, not in namespace metadata • Command names are matched as prefixes (not substrings) • The tool's documentation must now be specified in top-level :doc option key (not from namespace meta-data) • net.lewisship.cli-tools: ◦ In a defcommand: ▪︎ The :summary key has been renamed to :title ▪︎ The :as keyword is no longer supported ◦ abort has been stripped down, it no longer writes the tool name, command path, etc. ◦ The two-arg variant of print-errors has been removed ◦ dispatch* has been removed ◦ expand-dispatch-options has been removed • When an arg is ambiguous during dispatch, the error text now says "could match" and uses "or" as the conjunction, e.g. "ex could match exhume or extract" • Tool and command help is now printed to \out\, not \err\* • The builtin help command now as an option, -c / --commands, that can be one of none, root, or all, and the --flat switch was removed. • Dependencies no longer include those provided by Babashka itself, reverting the change in 0.15.1; new documentation identifies what to add back in Changes • Groups may now be nested, to arbitrary depth • You may now enter -h or --help after a group to get help for just that group • Tool help output has been reordered, with top-level tool commands first (previously, those were in a "Builtin" group and listed last) • Tool help now displays just root-level commands by default (add --commands all to list nested commands) • When extracting the first sentence as the single-line index, embedded periods are no longer considered the end of the sentence • net.lewisship.cli-tools: ◦ Added function tool-name ◦ Added function command-root ◦ Added function read-password ◦ New command-path function returns a composed string of the tool name and command path ◦ dispatch function has new options: ▪︎ :extra-tool-options - vector of additional tool options to prefix the default ▪︎ :tool-options-handler - callback function for handling extra tool options ▪︎ :transformer provides a function to add additional commands and groups after namespaces are loaded ▪︎ :source-dirs specifies extra directories to consider when caching ▪︎ Can now handle "messy" case where a command has the same name as a group • Cache files are now stored in ~/.cache/net.lewisship.cli-tools by default • Added initial support for commands defined as Babashka CLI functions • Added net.lewiship.cli-tools.test namespace https://github.com/hlship/cli-tools/milestone/9?closed=1

🎉 5

This has been a big process; at Nubank we have an internal tool called "nucli" that is a wrapper around over 1900 individual scripts. I'be been pushing a process to replace the central dispatching script with cli-tools, and to start defining new commands as defcommands rather than external Bash scripts. Many of the changes in 0.16 (nested groups, new callbacks, etc.) were driven by this.

🎉 2

https://github.com/squint-cljs/squint: Light-weight ClojureScript dialect v0.8.154 (2025-09-19) • Basic :import-maps support in squint.edn (just literal replacements, prefixes not supported yet)

🎉 4