- Move all source files from mytoolkit/ to bin/ - Update entry point and build config in pyproject.toml - Add pillow and pypdf dependencies - Update README and .gitignore paths - Remove unused subprocess import in pdf.py - Clean up duplicate imports in pdf merge command
70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
"""Self-management commands for bin."""
|
|
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
import click
|
|
|
|
|
|
def _get_project_root() -> Path:
|
|
"""Get mytoolkit project root."""
|
|
# This file is at bin/commands/self_mgmt.py
|
|
return Path(__file__).parent.parent.parent
|
|
|
|
|
|
@click.command(name="update")
|
|
def update_cmd():
|
|
"""Update mytoolkit from the local repository."""
|
|
root = _get_project_root()
|
|
|
|
click.secho("Updating mytoolkit...", fg="cyan")
|
|
|
|
# Run make install
|
|
result = subprocess.run(
|
|
["make", "install"],
|
|
cwd=str(root),
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
if result.returncode == 0:
|
|
click.secho("mytoolkit updated successfully.", fg="green")
|
|
else:
|
|
click.secho("Update failed:", fg="red", err=True)
|
|
click.echo(result.stderr, err=True)
|
|
raise click.Exit(1)
|
|
|
|
|
|
@click.command(name="uninstall")
|
|
def uninstall_cmd():
|
|
"""Uninstall mytoolkit."""
|
|
root = _get_project_root()
|
|
|
|
click.secho("Uninstalling mytoolkit...", fg="cyan")
|
|
|
|
result = subprocess.run(
|
|
["make", "uninstall"],
|
|
cwd=str(root),
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
if result.returncode == 0:
|
|
click.secho("mytoolkit uninstalled.", fg="green")
|
|
else:
|
|
click.secho("Uninstall failed:", fg="red", err=True)
|
|
click.echo(result.stderr, err=True)
|
|
raise click.Exit(1)
|
|
|
|
|
|
# Backward compatibility: keep self_cmd group for any existing scripts
|
|
@click.group(name="self")
|
|
def self_cmd():
|
|
"""Manage mytoolkit itself (legacy, use 'update'/'uninstall' directly)."""
|
|
pass
|
|
|
|
|
|
# Register commands in the group for backward compatibility
|
|
self_cmd.add_command(update_cmd, name="update")
|
|
self_cmd.add_command(uninstall_cmd, name="uninstall")
|