Automation tools can provide a consistent command line interface across a wide range of projects.
Whilst the Clojure CLI is a very extensible tool that flexibility can also add some complexity to its command line interface.
Using a consistent set of user aliases can help manage the command line interface, however, automation tools can abstract the command line task even further to provide a consistent and simple to user experience whilst keeping the underlying flexibility.
Practicalli recommends make
A Makefile is not reliant on programming language knowledge so has no barrier to those who are unfamiliar with the Clojure language.
Make is useful when working with mixed language teams to create a unified tool and command line across a wide range of projects.
- Make - ubiquitous task automation tool, programming language agnostic
- Shell Scripts
- Babashka - create task automation tool with Clojure
Make is very simple to use and has a long history as a build tool and wider task automation tool.
Task are defined in a
Makefile and task can depend on each other. Any commands or combination of commands that run on the command line can be used as make tasks.
make provides tab completion of tasks defined in the Makefile without additional configuration.
make is available for all operating systems.
Practicalli Project Templates include Makefile
Creating new projects with
:project/create and Practicalli Project Templates provide a Makefile with a wide range of common tasks for Clojure development.
Shell scripts provide a very common way to create a relatively ubiquitous approach to running tools, even across multiple Shell implementations (Bash, Zsh, fish, etc.) and operating systems.
Shell scripting language is very powerful especially for manipulation of the operating system, although scripts require development and maintenance.
Write automation scripts with Clojure code using the Babashka task runner
Babashka can use a wide range of Clojure functions and libraries, although as a general script tool then additional coding and maintenance may be reqiured compared to a dedicated tool.