Proposal
jr component impact NAME [--rename-to NEW] [--project KEY] [--json]
Blast-radius scan for component renames/deletions: component names are embedded as strings in saved assets, and a rename (companion issue) or delete silently breaks them. Scan:
| Asset |
Source |
Look for |
| Saved filters |
GET /rest/api/3/filter/search?expand=jql |
component = "NAME" / component in (…NAME…) in filter JQL |
| Board filters |
GET /rest/agile/1.0/board → /board/{id}/configuration → backing filter JQL |
same |
| Kanban/scrum quick-filters |
GET /rest/agile/1.0/board/{id}/quickfilter |
name references in quick-filter JQL |
| Dashboards |
GET /rest/api/3/dashboard → gadgets |
filter-backed gadgets resolve via the filters scan; embedded-JQL gadget properties best-effort |
| Automation rules |
no stable public REST for rule bodies |
out of scope; print a standing caveat |
- Output: one row per hit — asset type, name, owner, matched JQL fragment. Non-zero exit when hits exist, so scripts can gate.
- Matching must be JQL-aware (tokenize, don't substring-grep —
component = X vs the word X in a text clause) and case-folded consistently with the query-filter issue.
- Wire into
component rename as a pre-flight: warning: 3 filters and 1 quick-filter reference 'Cloudsmith' by name and will stop matching — --force to proceed.
Even a filters-only first cut would have caught the riskiest rename in our catalog rework this week.
Proposal
Blast-radius scan for component renames/deletions: component names are embedded as strings in saved assets, and a rename (companion issue) or delete silently breaks them. Scan:
GET /rest/api/3/filter/search?expand=jqlcomponent = "NAME"/component in (…NAME…)in filter JQLGET /rest/agile/1.0/board→/board/{id}/configuration→ backing filter JQLGET /rest/agile/1.0/board/{id}/quickfilterGET /rest/api/3/dashboard→ gadgetscomponent = Xvs the word X in a text clause) and case-folded consistently with the query-filter issue.component renameas a pre-flight:warning: 3 filters and 1 quick-filter reference 'Cloudsmith' by name and will stop matching — --force to proceed.Even a filters-only first cut would have caught the riskiest rename in our catalog rework this week.