#!/usr/bin/env python3

import argparse
import os
import sys

from rosidl_cmake import read_generator_arguments
from rosidl_parser import UnknownMessageType
from micro_ros_agent import generate_micro_ros_agent_xml_support

def is_valid_file(parser, file_name):
    if not os.path.exists(file_name):
        parser.error("File does not exist: '{0}'".format(file_name))
    file_name_abs = os.path.abspath(file_name)
    if not os.path.isfile(file_name_abs):
        parser.error("Path exists but is not a file: '{0}'".format(file_name_abs))
    return file_name


def main(argv=sys.argv[1:]):
    parser = argparse.ArgumentParser(
        description='Generate xml files for micrortps agent.',
        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)

    generator_args = read_generator_arguments(args.generator_arguments_file)

    try:
        rc = generate_micro_ros_agent_xml_support(generator_args)
        
        return 0
    except UnknownMessageType as e:
        print(str(e), file=sys.stderr)
        return 1
    if rc:
        return rc
    return 0


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