#!/usr/bin/env python3
"""
Synex Cleaner - CLI entrypoint

This script bootstraps PYTHONPATH so it can run either:
- Installed mode: /usr/lib/synex-cleaner
- Dev mode: <repo>/src/usr/lib/synex-cleaner (when running from the repo tree)

Environment variables:
- SYNEX_CLEANER_DEV=1 : Force dev path first (useful if package is installed but you want repo code)
"""

import os
import sys
from pathlib import Path


def _bootstrap_sysex_path() -> None:
    installed_dir = Path("/usr/lib/synex-cleaner")

    # When running from repo, this script is typically:
    # <repo>/src/usr/bin/synex-cleaner
    # We want:
    # <repo>/src/usr/lib/synex-cleaner
    here = Path(__file__).resolve()
    dev_dir = here.parent.parent / "lib" / "synex-cleaner"  # ../.. from bin -> usr -> lib/synex-cleaner

    force_dev = os.environ.get("SYNEX_CLEANER_DEV") == "1"

    # Priority logic:
    # - If forced: dev first, then installed
    # - If dev dir exists (likely running from repo): dev first, then installed
    # - Otherwise: installed first, then dev
    candidates = []
    if force_dev or dev_dir.is_dir():
        candidates = [dev_dir, installed_dir]
    else:
        candidates = [installed_dir, dev_dir]

    for c in candidates:
        if c.is_dir():
            sys.path.insert(0, str(c))
            return

    raise RuntimeError(
        "Cannot locate synex-cleaner library directory.\n"
        f"Checked: {installed_dir} and {dev_dir}\n"
        "If you're running from the repo, make sure the layout is: src/usr/lib/synex-cleaner/...\n"
        "If the package is installed, make sure /usr/lib/synex-cleaner exists."
    )


def main() -> int:
    _bootstrap_sysex_path()

    # Import after bootstrapping sys.path
    from cleaner.cli import main as cli_main  # type: ignore

    return int(cli_main() or 0)


if __name__ == "__main__":
    raise SystemExit(main())
