Files
myagents/bin/commands/update.py
T
Zhengshou Lai 480ee311f2 style: format with black and fix ruff SIM117 warnings
- Merge nested with statements in test_project_root.py
- Reformat multi-line calls in test_cli.py and update.py
2026-05-27 11:23:13 +08:00

57 lines
1.6 KiB
Python

"""Reinstall myclaude from the local repo."""
import subprocess
import sys
from pathlib import Path
import click
from rich.console import Console
from bin.project_root import get_myclaude_project_root
console = Console()
stderr_console = Console(stderr=True)
def _run_make_install(root: Path) -> int:
return subprocess.run(
["make", "install"],
cwd=str(root),
check=False,
).returncode
def _run_pip_editable(root: Path) -> int:
cmd = [sys.executable, "-m", "pip", "install", "-e", str(root)]
return subprocess.run(cmd, cwd=str(root), check=False).returncode
@click.command("update")
def update_cmd() -> None:
"""Reinstall myclaude from this repository (make install, or pip install -e)."""
root = get_myclaude_project_root()
fallback = Path.home() / ".myclaude"
if root == fallback:
stderr_console.print(
"[red]Not inside myclaude repo.[/red] Set [cyan]MYCLAUDE_PROJECT_ROOT[/cyan] "
"or run from the clone.",
)
raise SystemExit(1)
console.print("[bold cyan]Updating myclaude…[/bold cyan]")
makefile = root / "Makefile"
if makefile.is_file():
rc = _run_make_install(root)
if rc != 0:
console.print(
"[yellow]make install failed, trying pip -e…[/yellow]"
)
rc = _run_pip_editable(root)
else:
rc = _run_pip_editable(root)
if rc != 0:
stderr_console.print("[red]Update failed.[/red]")
raise SystemExit(rc)
console.print("[green]myclaude updated.[/green]")