Shopify / Shopify/packwerk

[Feature Request][Help Offer] Get All References

Open
#433 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Ruby
Stars
1.9k
Forks
121
Avg merge
2m
Merged PRs (30d)
1

Description

Hey all,

Gusto just recently open sources QueryPackwerk, which allows you to query packwerk violations in much the same way as you might query an ActiveRecord object. One of the key weaknesses of this gem is that it relies on Violations to run, and the ParsePackwerk gem to fuel them, meaning that if anything is added to a TODO it gets skipped.

Is there a way to potentially get all Packwerk references into a single list?

My hunch is yes, but I'm having a bit of trouble piecing together how to go about that. I think that using a Checker might be a path, and then trying to emulate a bit of how violations work today except trying to get rid of any exclusion clauses. Is that the right direction, or am I missing something? Currently trying to reconstitute this from the source code to see if I can cobble something together, but also wanted to check if something already exists or there's an easier way that I'm not seeing here.

TL;DR: I want to help create a way to get a list of all references in Packwerk, but could use a few pointers or some direction as this is not a documented path for the library.

If it does not exist I'd be up for helping to get it going, and adding it to tools like QueryPackwerk. I seem to remember a while ago I was chatting with Rafael about potentially even putting references into a SQLite3 DB of some sort to try and make tooling here even easier, but it's been a bit.


EDIT: I do see this PR looks to achieve what I'm looking for, could we consider merging it?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing PR #397 and the Checker, Violations, and ParsePackwerk paths mentioned in the issue. Confirm whether the proposed approach returns all references, including those in TODOs, and whether it supports QueryPackwerk; done means an agreed implementation or mergeable follow-up.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.