INNER CODE UNIT · Python
cmd_rollback
kangarooking/cangjie-skill · scripts/cangjie.py:223
def cmd_rollback(args) -> int:
sidecar = Path(args.pack) / ".cangjie"
snaps = sorted((sidecar / "snapshots").glob("*")) if (sidecar / "snapshots").exists() else []
if args.list or not args.to:
print("可用快照:" + ("\n " + "\n ".join(s.name for s in snaps) if snaps else " (无)"))
return 0
snap = sidecar / "snapshots" / args.to
if not snap.is_dir():
raise SystemExit(f"快照不存在: {snap}")
target = Path(args.target)
with WriterLock(target):
if target.exists():
snapshot_dir(target, sidecar / "snapshots", "pre-rollback")
shutil.rmtree(target)
shutil.copytree(snap, target)
print(f"已回滚 {target} ← {snap.name}")
return 0