#!/usr/bin/env python3
import sys
import argparse

import rclpy
from leo_object_detection.object_detector_node import ObjectDetectorNode


def add_argparse_arguments(parser: argparse.ArgumentParser):
    parser.add_argument(
        "-p",
        "--path",
        type=str,
        required=True,
        dest="model_path",
        help="path to the object detection model",
    )
    parser.add_argument(
        "-l",
        "--labels",
        type=str,
        required=True,
        dest="labels_path",
        help="name of the file with labels for detected objects",
    )
    parser.add_argument(
        "-c",
        "--camera-topic",
        default="camera/image_raw",
        type=str,
        required=False,
        dest="image_topic",
        help="name of the topic with Image messages from rover",
    )


if __name__ == "__main__":
    rclpy.init()
    parser = argparse.ArgumentParser(
        description="Detect objects seen in rover's camera"
    )
    add_argparse_arguments(parser)

    sys_args = rclpy.utilities.remove_ros_args(sys.argv[1:])
    parsed_args = parser.parse_args(sys_args)

    node = ObjectDetectorNode(
        parsed_args.model_path, parsed_args.image_topic, parsed_args.labels_path
    )

    try:
        rclpy.spin(node)
    except KeyboardInterrupt as e:
        node.cleanup()
        node.destroy_node()
        rclpy.try_shutdown()
