Add --prune to stack dot
#487
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TL;DR: Add
--prune p1,p2,p3
tostack dot
to remove nodes from the dependency graphThe Motivation
Playing around with some haskell projects and their

stack dot
graphs, it becomes apparent that it it a little hard to look at them because they get quite huge. As an example, take the graph forwreq
generated bystack dot --external --no-include-base
:okay that is a LOT. Looking a bit more we see that
wreq-examples
is also there which depends on a bunch of the dependencies.The new feature is that
--prune
takes a comma separated list of package names that will be pruned.So here is

wreq
without dependencies ofwreq-examples
andlens
:Still a lot but more manageable.
Of course we can have a dependency graph that is a little more focused by pruning more (randomly chosen) dependencies from the graph:
stack dot --external --no-include-base --prune lens,wreq-examples,http-client,aeson,tls,http-client-tls
The implementation
--prune PACKAGE1,PACKAGE2,...
Stack.Dot
DotSpec
for pruningsplit
without version bound, do we need one?Help text for
stack dot
PS: I also took the liberty to add the changes to CHANGELOG, or is this not wanted / do you prefer to do it yourself in the future?