fix: don't reactivate extensions with zero versions in sync-registry

After /release-deleted deactivates an extension (when the last release
is removed from Gitea), running /sync-registry would reactivate it
because the repo still exists. Now sync-registry skips reactivation
when an extension has zero rows in extension_versions — those were
intentionally retired and must stay deactivated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-25 17:49:16 +00:00
parent 18d54e1403
commit 536b03b34d
+6 -1
View File
@@ -140,13 +140,18 @@ def sync_extension_registry():
added, reactivated, deactivated = [], [], []
# Extensions deactivated via /release-deleted (zero versions) must stay deactivated even if the repo still exists.
versions_count = {r['name']: r['cnt'] for r in query(
"SELECT e.name, COUNT(ev.id) AS cnt FROM extensions e LEFT JOIN extension_versions ev ON ev.extension_id = e.id GROUP BY e.name"
)}
for name, kebab in gitea_extensions.items():
composer_name = f'{GITEA_ORG}/{kebab}'
if name not in db_names:
query("INSERT INTO extensions (name, composer_name, is_active) VALUES (%s, %s, true)",
(name, composer_name), fetch=None)
added.append(name)
elif name not in db_active:
elif name not in db_active and versions_count.get(name, 0) > 0:
query("UPDATE extensions SET is_active = true, updated_at = NOW() WHERE name = %s",
(name,), fetch=None)
reactivated.append(name)