import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import EmitEvent, RegisterEventHandler
from launch.events import Shutdown
from launch.event_handlers import OnProcessExit
from launch_ros.actions import Node


package_name = "semantic_mission_planner"


def generate_launch_description():
    # log format
    os.environ["RCUTILS_CONSOLE_OUTPUT_FORMAT"] = (
        "[{time}] [{name}] [{severity}] {message}"
    )

    params_path = os.path.join(get_package_share_directory(package_name), "params")
    params_file = os.path.join(params_path, "default.yaml")
    planner_node = Node(
        package=package_name,
        executable="mission_planner_node",
        name="mission_planner_node",
        output="screen",
        emulate_tty=True,
        parameters=[params_file],
    )

    return LaunchDescription(
        [
            planner_node,
            RegisterEventHandler(
                event_handler=OnProcessExit(
                    target_action=planner_node, on_exit=[EmitEvent(event=Shutdown())]
                )
            ),
        ]
    )
