Something went wrong while fetching comments. Please try again.
Created by: mrnugget
This PR extends the repo:deps() predicate to accept an additional
parameter: transitive:yes|no|only.
When transitive:yes is given and a full-fidelity dependency graph has
been persisted, transitive + direct dependencies of an indexed lockfile
are returned. If it's transitive:no then only direct ones will be
returned. transitive:only is ignored for now.
The changes in here can be put into two buckets:
Search query changes to parse/validate transitive:yes in
repo:deps().
Grunt work to make sure transitive: is applied only to the
repo+revspecs for which it was used. i.e.: if the user specified
repo:deps(^github\.com/org-\w+/repo.*$@main:v4 transitive:yes) \
repo:deps(^github\.com/org-\w+/repo2.*$@v5:v6 transitive:no)
Then the the repo+revs yielded in first predicate should have
transitive:yes set, but the repo+revs yielded by second one should
not.
Point (2) required a lot of busy work in the service layer to pass the repo+revspec pairs from the search backend to the database layer correctly. But I think the end result is actually easier to understand than what we had before.
With all the bits in place now, I can easily add level:1 or lockfile:client/web/yarn.lock as parameters.
@camdencheek tagging you for the search parts, since we paired on this.
@efritz @stefanhengl @eseliger tagging you for the backend parts.