refactor(self-mgmt): centralize manual file list for install/uninstall

This commit is contained in:
Zhengshou Lai
2026-06-04 01:05:46 +08:00
parent da52571a9c
commit 3f7c625781
2 changed files with 28 additions and 7 deletions
+10 -2
View File
@@ -2,6 +2,9 @@ ROOT_DIR := $(shell pwd)
COMP_DIR := $(HOME)/.local/bin/completions
PYTHON ?= python3
# 手动安装的文件清单(与 bin/commands/self_mgmt.py 中的 _MANUAL_FILES 保持同步)
MANUAL_FILES := $(COMP_DIR)/_mytoolkit $(COMP_DIR)/mytoolkit.bash
.PHONY: help install uninstall
help:
@@ -27,5 +30,10 @@ install:
uninstall:
$(PYTHON) -m pip uninstall mytoolkit -y
rm -f "$(COMP_DIR)/_mytoolkit" "$(COMP_DIR)/mytoolkit.bash"
@echo "Uninstalled mytoolkit and removed completions"
@for f in $(MANUAL_FILES); do \
if [ -e "$$f" ] || [ -L "$$f" ]; then \
rm -f "$$f"; \
echo "Removed $$f"; \
fi; \
done
@echo "Uninstalled mytoolkit and cleaned up manual files"
+15 -2
View File
@@ -9,6 +9,15 @@ from pathlib import Path
import click
# 手动安装的文件清单(pip 管理范围外,uninstall 时需要额外清理)
_MANUAL_FILES: dict[str, list[Path]] = {
"completions": [
Path.home() / ".local" / "bin" / "completions" / "_mytoolkit",
Path.home() / ".local" / "bin" / "completions" / "mytoolkit.bash",
],
}
def _get_project_root() -> Path:
"""Get mytoolkit project root from source tree."""
return Path(__file__).parent.parent.parent
@@ -78,11 +87,15 @@ def _uninstall() -> None:
check=False,
)
comp_dir = Path.home() / ".local" / "bin" / "completions"
for f in (comp_dir / "_mytoolkit", comp_dir / "mytoolkit.bash"):
removed = 0
for paths in _MANUAL_FILES.values():
for f in paths:
if f.exists() or f.is_symlink():
f.unlink()
click.secho(f"Removed {f}", fg="green")
removed += 1
if removed == 0:
click.secho("No manual files to clean up.", fg="cyan")
@click.command(name="update")