Here's my general problem statement (this applies to a monorepo as well):
- a development team works together on multiple projects that each have their
deps.edn file, and
- those developers have their own preferred tooling configured in their own
~/.clojure/deps.edn file, and
- the team as a whole wants a level of consistency in terms of certain library or tooling versions across multiple projects, by providing some standardized aliases and some "pinned" versions (e.g.,
Bullets 1. and 2. are supported by the CLI/t.d.a. but there's nowhere to hang the multi-project standardization piece.
Currently, folks who want 3. are using
CLJ_CONFIG to provide a team-standard
deps.edn file but losing 1. in the process. This is considered a bit of a hack (although
CLJ_CONFIG is documented).
Michiel Borkent notes that his
clj-kondo tool faced a similar problem in terms of where it reads configuration data from and his solution was to provide a command-line argument that specified multiple configuration files to read. A similar approach could be taken with the Clojure CLI, allowing an arbitrary number of
deps.edn files to be combined (after the system + user level ones and before the command-line
The current "system + user + project + command-line" logic is baked into
tools.deps.alpha itself so this is not just a CLI script change -- and whatever approach is taken to address this needs to be available to tooling that needs to run analysis based on a combined
deps.edn environment under user-specific aliases (as discussed here https://ask.clojure.org/index.php/9848/tooling-based-tools-alpha-construct-basis-specified-aliases).