tools: add canonical sweep.py with explicit coa-elvui exclusion

Two failures that compounded in the last round of ElvUI breakage:

  1. The sweep script only lived in /tmp during a session — re-derived
     from scratch each time, so the EXCLUDE_FORKS knowledge wasn't
     anywhere reviewable.
  2. The old filename-only filter ('if -ElvUI in name skip') missed
     ElvUI's customizations inside otherwise-stock-named files AND
     rsync --delete killed -ElvUI suffixed widgets that exist only in
     ElvUI's bundle (e.g. AceGUIWidget-Button-ElvUI.lua).

This tool fixes both:

  - Lives in the repo (tools/sweep.py), so the exclusion list is
    visible in version control and reviewable.
  - EXCLUDED_FORKS = {'coa-elvui'} hardcoded with an in-source comment
    explaining why.
  - --exclude='*-ElvUI*' passed to every rsync as belt-and-braces, so
    even if a future fork accidentally carries an ElvUI-namespaced
    file we never wanted to overwrite, the sweep won't touch it.
  - Refuses to add new lib dirs — only updates ones already present
    in the fork.
  - --dry-run flag for safe verification.

README updated with a 'Forks excluded from sweep' section documenting
the same.
This commit is contained in:
2026-05-25 10:06:41 +02:00
parent 9583952806
commit a96308ff2c
2 changed files with 180 additions and 0 deletions
+17
View File
@@ -69,3 +69,20 @@ libs. Note the new upstream commit in the README's commit-pin line above, and re
the CoA-compat patches listed above against the new revision (the FDID one is mechanical —
see `/tmp/fix_fdid.py` history). Keep patches **minimal and documented in this README**;
prefer fixing them upstream where reasonable.
Run the sweep via `tools/sweep.py` from this repo — it walks every sibling `coa-*` fork
under `/home/sub/repos/coa`, finds each fork's bundled `LibStub` / `CallbackHandler-1.0` /
`Ace*-3.0` dirs, and rsyncs them from this bundle. Use `--dry-run` first.
### Forks excluded from sweep
`coa-elvui` is excluded from the sweep — see `EXCLUDED_FORKS` in `tools/sweep.py`. ElvUI
ships its own bundled Ace3 stack with ElvUI-specific patches inside otherwise-stock-named
files (`AceLocale-3.0.lua`, `AceConfigDialog-3.0.lua`, every `AceGUI-3.0/widgets/*.lua`)
**plus** `-ElvUI`-suffixed widgets that don't exist in canonical at all (e.g.
`AceGUIWidget-Button-ElvUI.lua`). `rsync --delete` obliterates the latter; an in-place
sync overwrites the former. Either failure breaks `/ec` and floods locale errors. ElvUI
maintains its own bundle on its own cadence and must never be touched by this tool.
The sweep also passes `--exclude='*-ElvUI*'` to every rsync as a belt-and-braces guard
against future forks that happen to carry an ElvUI-namespaced file we didn't anticipate.