Support for sharing deps across both projects and users

Description

Per https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects ...

  1. a development team works together on multiple projects that each have their deps.edn file, and

  2. those developers have their own preferred tooling configured in their own ~/.clojure/deps.edn file, and

  3. 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., :override-deps or :default-deps).

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 -Sdeps data).

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).

Environment

None

Assignee

Unassigned

Reporter

Alex Miller

Labels

None

Approval

None

Patch

None

Priority

Major