#!/usr/bin/env python3
import logging
import os
import sys
import time


def flp_serial_by_name(flp_name):
    if sys.platform == "darwin":  # MacOS
        flp_serial = "/dev/cu.usbmodemflip_" + flp_name + "1"
    elif sys.platform == "linux":  # Linux
        flp_serial = (
            "/dev/serial/by-id/usb-Flipper_Devices_Inc._Flipper_"
            + flp_name
            + "_flip_"
            + flp_name
            + "-if00"
        )

    if os.path.exists(flp_serial):
        return flp_serial
    else:
        if os.path.exists(flp_name):
            return flp_name
        else:
            return ""


UPDATE_TIMEOUT = 60 * 4  # 4 minutes


def main():
    flipper_name = sys.argv[1]
    elapsed = 0
    flipper = flp_serial_by_name(flipper_name)
    logging.basicConfig(
        format="%(asctime)s %(levelname)-8s %(message)s",
        level=logging.INFO,
        datefmt="%Y-%m-%d %H:%M:%S",
    )
    logging.info("Waiting for Flipper to be ready...")

    while flipper == "" and elapsed < UPDATE_TIMEOUT:
        elapsed += 1
        time.sleep(1)
        flipper = flp_serial_by_name(flipper_name)

    if flipper == "":
        logging.error("Flipper not found!")
        sys.exit(1)

    logging.info(f"Found Flipper at {flipper}")

    sys.exit(0)


if __name__ == "__main__":
    main()