#!/usr/bin/env python3

# Copyright(c)[2025][AGIROS][TravoDDS] is licensed under Mulan PSL v2.
#
# You can use this software according to the terms and conditions of
# the Mulan PSL v2.You may obtain a copy of Mulan PSL v2 at :
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF
# ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
# NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
#
# See the Mulan PSL v2 for more details.

import argparse
import sys

from rosidl_cmake import read_generator_arguments
from rosidl_typesupport_travodds_cpp import generate_ros_cpp
from rosidl_typesupport_travodds_cpp import generate_travodds_cpp


def main(argv=sys.argv[1:]):
    parser = argparse.ArgumentParser(
        description='Generate the C++ interfaces for travodds.',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument(
        '--generator-arguments-file',
        required=True,
        help='The location of the file containing the generator arguments')
    args = parser.parse_args(argv)

    # generate ros2 realted src
    generate_ros_cpp(args.generator_arguments_file)
    
    # generate travodds specific src
    generator_args = read_generator_arguments(args.generator_arguments_file)

    depend_args = None
    if 'ros_interface_dependencies' in generator_args:
        depend_args = generator_args['ros_interface_dependencies']
    include_args = None
    if 'include_paths' in generator_args:
        include_args = generator_args['include_paths']

    generate_travodds_cpp(
        generator_args['package_name'],
        generator_args['additional_files'],
        generator_args['output_dir'],
        depend_args,
        include_args)
    

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