Files
image-gen-custom-skill/skill/image-gen-custom/scripts/install_skill.py
T
2026-09-05 21:08:13 +08:00

46 lines
1.7 KiB
Python

#!/usr/bin/env python3
"""Install this skill without copying local secrets or runtime caches."""
from __future__ import annotations
import argparse
import os
from pathlib import Path
import shutil
EXCLUDED_FILES = {"connection.local.json"}
EXCLUDED_DIRS = {".git", "__pycache__", "venv"}
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--codex-home", type=Path)
parser.add_argument("--force", action="store_true")
args = parser.parse_args()
source = Path(__file__).resolve().parent.parent
codex_home = args.codex_home or Path(os.environ.get("CODEX_HOME", Path.home() / ".codex"))
destination = codex_home.expanduser() / "skills" / "image-gen-custom"
if source == destination.resolve():
print(f"Skill is already installed at: {destination}")
return 0
if destination.exists() and not args.force:
raise SystemExit(f"Skill already exists at {destination}; use --force to update it")
destination.mkdir(parents=True, exist_ok=True)
for item in source.rglob("*"):
relative = item.relative_to(source)
if item.name in EXCLUDED_FILES or any(part in EXCLUDED_DIRS for part in relative.parts):
continue
target = destination / relative
if item.is_dir():
target.mkdir(parents=True, exist_ok=True)
else:
target.parent.mkdir(parents=True, exist_ok=True)
shutil.copy2(item, target)
print(f"Installed image-gen-custom to: {destination}")
print(f"Configure the API with: python {destination / 'scripts' / 'configure_key.py'}")
return 0
if __name__ == "__main__":
raise SystemExit(main())