Skip to content

Commit fe26741

Browse files
iamaeroplaneclaude
andcommitted
fix(extensions): preserve installed_at in enable/disable, narrow exception handling
- extension_enable: Update registry directly instead of calling add() to preserve the original installed_at timestamp - extension_disable: Same fix - direct registry update preserves timestamp - extension_list --available/--all: Narrow exception handler from Exception to ExtensionError, let KeyboardInterrupt propagate Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent a84f37c commit fe26741

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

src/specify_cli/__init__.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2017,7 +2017,9 @@ def extension_list(
20172017
elif available and not all_extensions:
20182018
console.print("\n[yellow]No uninstalled extensions in catalog[/yellow]")
20192019
console.print("\nAll catalog extensions are already installed.")
2020-
except Exception as e:
2020+
except KeyboardInterrupt:
2021+
raise
2022+
except ExtensionError as e:
20212023
console.print(f"\n[yellow]Warning:[/yellow] Could not fetch catalog: {e}")
20222024
if available and not installed:
20232025
console.print("\nInstall an extension with:")
@@ -2704,7 +2706,9 @@ def extension_enable(
27042706
raise typer.Exit(0)
27052707

27062708
metadata["enabled"] = True
2707-
manager.registry.add(extension_id, metadata)
2709+
# Update registry directly to preserve installed_at (add() would overwrite it)
2710+
manager.registry.data["extensions"][extension_id] = metadata
2711+
manager.registry._save()
27082712

27092713
# Enable hooks in extensions.yml
27102714
config = hook_executor.get_project_config()
@@ -2753,7 +2757,9 @@ def extension_disable(
27532757
raise typer.Exit(0)
27542758

27552759
metadata["enabled"] = False
2756-
manager.registry.add(extension_id, metadata)
2760+
# Update registry directly to preserve installed_at (add() would overwrite it)
2761+
manager.registry.data["extensions"][extension_id] = metadata
2762+
manager.registry._save()
27572763

27582764
# Disable hooks in extensions.yml
27592765
config = hook_executor.get_project_config()

0 commit comments

Comments
 (0)