This commit is contained in:
2026-01-01 20:37:27 -08:00
parent f3c79609d8
commit deb05c0d44
35 changed files with 5030 additions and 4879 deletions

View File

@@ -1,6 +1,7 @@
from __future__ import annotations
from importlib import import_module
from types import ModuleType
from typing import Any, Dict, List, Optional
try:
@@ -21,22 +22,36 @@ def _should_hide_db_args(config: Optional[Dict[str, Any]]) -> bool:
return False
try:
from cmdlet import REGISTRY
except Exception:
REGISTRY = {} # type: ignore
_cmdlet_pkg: ModuleType | None = None
try:
from cmdnat import register_native_commands as _register_native_commands
except Exception:
_register_native_commands = None
def _get_cmdlet_package() -> Optional[ModuleType]:
global _cmdlet_pkg
if _cmdlet_pkg is not None:
return _cmdlet_pkg
try:
_cmdlet_pkg = import_module("cmdlet")
except Exception:
_cmdlet_pkg = None
return _cmdlet_pkg
def _get_registry() -> Dict[str, Any]:
pkg = _get_cmdlet_package()
if pkg is None:
return {}
return getattr(pkg, "REGISTRY", {}) or {}
def ensure_registry_loaded() -> None:
"""Ensure native commands are registered into REGISTRY (idempotent)."""
if _register_native_commands and REGISTRY is not None:
pkg = _get_cmdlet_package()
if pkg is None:
return
ensure_fn = getattr(pkg, "ensure_cmdlet_modules_loaded", None)
if callable(ensure_fn):
try:
_register_native_commands(REGISTRY)
ensure_fn()
except Exception:
pass
@@ -105,7 +120,8 @@ def get_cmdlet_metadata(
if data is None:
try:
reg_fn = (REGISTRY or {}).get(cmd_name.replace("_", "-").lower())
registry = _get_registry()
reg_fn = registry.get(cmd_name.replace("_", "-").lower())
if reg_fn:
owner_mod = getattr(reg_fn, "__module__", "")
if owner_mod:
@@ -150,7 +166,8 @@ def list_cmdlet_metadata(config: Optional[Dict[str, Any]] = None) -> Dict[str, D
"""Collect metadata for all registered cmdlet keyed by canonical name."""
ensure_registry_loaded()
entries: Dict[str, Dict[str, Any]] = {}
for reg_name in (REGISTRY or {}).keys():
registry = _get_registry()
for reg_name in registry.keys():
meta = get_cmdlet_metadata(reg_name, config=config)
canonical = str(reg_name).replace("_", "-").lower()