#! /usr/bin/env python
import argparse
import sys
import os
import shutil
from pathlib import Path

MINECRAFT_DIR = Path(os.environ["INST_MC_DIR"])
WAYPOINT_BASE_DIR = MINECRAFT_DIR / "XaeroWaypoints"
GLOBAL_WAYPOINT_DIR = (
    Path(os.path.expanduser("~")) / ".config" / "minecraft" / "XaeroWaypoints"
)


def main() -> int:
    # Handle program arguments
    ap = argparse.ArgumentParser(description="Post-exit tasks for Minecraft")
    args = ap.parse_args()
    print("[EWCONFIG] Executing post-exit tasks for Minecraft")
    print(f"[EWCONFIG] Minecraft directory: {MINECRAFT_DIR}")

    # If the waypoint base dir doesn't exist, we don't need to do anything
    if not WAYPOINT_BASE_DIR.exists():
        print("[EWCONFIG] No waypoints to sync")
        return 0

    # Find all multiplayer waypoint dirs
    multiplayer_waypoints = [
        directory
        for directory in WAYPOINT_BASE_DIR.iterdir()
        if directory.is_dir() and directory.name.startswith("Multiplayer")
    ]
    print(
        f"[EWCONFIG] Found {len(multiplayer_waypoints)} multiplayer waypoint directories"
    )

    # Copy the contents of each multiplayer waypoint dir to the global storage
    for waypoint_dir in multiplayer_waypoints:
        dest_dir = GLOBAL_WAYPOINT_DIR / waypoint_dir.name
        print(f"[EWCONFIG] Copying {waypoint_dir} to {dest_dir}")

        # Use shutil to copy the directory
        dest_dir.mkdir(parents=True, exist_ok=True)
        shutil.copytree(waypoint_dir, dest_dir, dirs_exist_ok=True)

    return 0


if __name__ == "__main__":
    sys.exit(main())