import argparse
from pathlib import Path
import subprocess
import sys


def main(argv):
    """Installs the scouting application on the scouting server."""
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--deb",
        type=str,
        required=True,
        help="The .deb file to deploy.",
    )
    parser.add_argument(
        "--host",
        type=str,
        default="scouting.frc971.org",
        help="The SSH host to install the scouting web server to.",
    )
    args = parser.parse_args(argv[1:])
    deb = Path(args.deb)

    # Copy the .deb to the scouting server, install it, and delete it again.
    subprocess.run(["rsync", "-L", args.deb, f"{args.host}:/tmp/{deb.name}"],
                   check=True,
                   stdin=sys.stdin)
    subprocess.run(f"ssh -tt {args.host} sudo dpkg -i /tmp/{deb.name}",
                   shell=True,
                   check=True,
                   stdin=sys.stdin)
    subprocess.run(f"ssh {args.host} rm -f /tmp/{deb.name}",
                   shell=True,
                   check=True,
                   stdin=sys.stdin)


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