import os, subprocess from typing import Optional ADAPTER_DIR = ".config/adapters" def list_adapters(): if not os.path.exists(ADAPTER_DIR): return [] return [d for d in os.listdir(ADAPTER_DIR) if os.path.isdir(os.path.join(ADAPTER_DIR, d))] def adapter_path(name: str): p = os.path.join(ADAPTER_DIR, name) return p if os.path.exists(p) else None def install_adapter_from_remote(url: str, name: str): os.makedirs(ADAPTER_DIR, exist_ok=True) tarball = os.path.join(ADAPTER_DIR, f"{name}.zip") try: subprocess.check_call(["wget", "-O", tarball, url]) except Exception: try: subprocess.check_call(["curl", "-L", url, "-o", tarball]) except Exception as e: raise RuntimeError("download failed: " + str(e)) subprocess.check_call(["unzip", "-o", tarball, "-d", os.path.join(ADAPTER_DIR, name)]) return adapter_path(name)