I spent some time today hacking on a new deps tree that has a lot more info in it. in particular: • lists deps not in one place but in ALL places they're used (minus some stuff in a suppression list which defaults to clojure/spec/core.specs) • lists deps that are NOT included with reason why • special support for the case of discovering a newer version of a dep that was previously included during the expansion - these are marked with * and previously included have reason :superseded. this happens to be the locus of many tricky cases and bugs so often I'm looking specifically for this
example ^^, interested if you have any feedback. not yet packaged for public use as I'm still tinkering
looks really useful! Presumably this info is also available as data via the tdeps api?
Not really, it’s built from the trace log so technically yes, but haven’t decided yet how to break the steps apart yet
What would you want to do with it as data?
I have no idea, beyond maybe visualising it. I just assumed that the rendering would’ve been built on top of such a representation.
EDN (or XML? :)) output would be a nice to have, although currently I'm not using it programmatically
Looks nice and useful!
Certainly feasible - would help to know what people would want to do with it
I don’t know, I guess the most important data is the concluded set of deps you’re running with — which is obviously already available… You’re probably right that the reasons tools.deps made a versioning decision are something of secondary interest only. I guess if it were in data something like cursive or cider could use that info to annotate all the deps they know about in their UI trees etc.
I could certainly imagine people using such a tool in my editor or IDE, but the CLI interface you’ve made is totally sufficient for me.
:thinking_face: would it also be useful to see which alias was ultimately responsible for each dep being pulled in?
Nice! I'd only need to make a minor tweak to my "ancient" shell script to pick up those changes (adding an fgrep -v ' X '
filter) and then just cleaning up the leading .
or *
and maybe running it through uniq
which I don't currently have to do.
That's really nice and informative. Thank you!