A port of the clojure bash script to Clojure.
If your clojure installation works well for you, then you don't need this.
This repo can be seen as a proof of concept of what is possible with GraalVM and Clojure. Windows users might find the deps.exe executable of value if they have trouble getting their system up and running. This repo might also be a place to experiment with features that are not available in the original clojure command.
Arguably Bash and Powershell are less attractive languages for Clojure
developers than Clojure itself. This repo provides the clojure bash script as
a port in Clojure. It can be used as a JVM Clojure script (deps.clj), uberjar
or library.
To get better startup, comparable to the original bash version, this project can be run as a binary called deps.exe or as a script called deps.clj with babashka.
Experimental, breaking changes will happen. Feedback is welcome.
The deps.clj script can simply be downloaded from this repo. If you want a
binary or uberjar, go to
releases.
You don't need clojure to run this project, but you will need a
clojure-tools jar. The clojure-tools jar is normally downloaded by the
clojure installer itself
(gz,
zip). The
deps.clj tool will try to resolve the jar in the directory
$HOME/.deps.clj/ClojureTools. If it cannot it find it there, it will try to
download it. You can override the location of the jar with the
CLOJURE_TOOLS_CP environment variable.
$ ./deps.clj -Spath -Sdeps '...'
$ ./deps.exe -Spath -Sdeps '...'
An example of how to set CLOJURE_TOOLS_CP on Windows and how to pass an
-Sdeps value. Note the double double quotes.
C:\Users\borkdude\Downloads>set CLOJURE_TOOLS_CP=c:\Users\borkdude\Downloads\clojure-tools-1.10.1.492\ClojureTools\clojure-tools-1.10.1.492.jar
C:\Users\borkdude\Downloads>deps -Spath -Sdeps "{:deps {borkdude/deps.clj {:mvn/version ""0.0.1""}}}"
The deps.clj script adds the following non-standard options:
-Sdeps-file Use this file instead of deps.edn
-Scommand A custom command that will be invoked. Substitutions: {{classpath}}, {{main-opts}}.
Given this script-deps.edn file:
{:paths ["scripts"]
:aliases
{:main
{:main-opts ["-m" "scripts.main"]}}}
and scripts/main.cljc:
(ns scripts.main)
(defn -main [& _args]
(println "Hello from script!"))
you can invoke deps.clj as follows to invoke babashka:
$ deps.clj -Sdeps-file script-deps.edn -A:main -Scommand "bb -cp {{classpath}} {{main-opts}}"
Hello from script!
This can also be used with planck:
$ deps.clj -Sdeps-file script-deps.edn -A:main -Scommand "planck --classpath {{classpath}} {{main-opts}}"
Hello from script!
Copyright © 2019 Michiel Borkent
Distributed under the EPL License. See LICENSE.
This project is based on code from clojure/brew-install which is licensed under the same EPL License.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |