"""Install requirements for a given integration."""

import argparse
from pathlib import Path
import subprocess
import sys

from .gen_requirements_all import gather_recursive_requirements
from .util import valid_integration


def get_arguments() -> argparse.Namespace:
    """Get parsed passed in arguments."""
    parser = argparse.ArgumentParser(
        description="Install requirements for a given integration"
    )
    parser.add_argument(
        "integration", type=valid_integration, help="Integration to target."
    )

    arguments = parser.parse_args()

    return arguments


def main() -> int | None:
    """Install requirements for a given integration."""
    if not Path("requirements_all.txt").is_file():
        print("Run from project root")
        return 1

    args = get_arguments()

    requirements = gather_recursive_requirements(args.integration)

    cmd = [
        sys.executable,
        "-m",
        "pip",
        "install",
        "-c",
        "homeassistant/package_constraints.txt",
        "-U",
        *requirements,
    ]
    print(" ".join(cmd))
    subprocess.run(
        cmd,
        check=True,
    )


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