#!/usr/bin/python3 # -*- coding: utf-8 -*- import argparse import os import sys from MsgCpp import MsgCpp def main(): parser = argparse.ArgumentParser( description='Tool for generating C++ header and source files containing messages definitions for the inputted message csv file' ) parser.add_argument('csv', nargs='+') parser.add_argument('device_name', help='name of the device; used for naming the output C++ message definitions header and source files') parser.add_argument('--header_dir', help='output directory for the generated .h header file', default='.') parser.add_argument('--source_dir', help='output directory for the generated .cpp source file', default='.') parser.add_argument('--namespace', dest='namespace', help='C++ namespace scope for generated C++ files', required=False) parser.add_argument('--proto', action="store_true", help='add protobuf utility functions to generated C++ files', required=False) args = parser.parse_args() if len(sys.argv) < 3: parser.print_help() else: msg_cpp = MsgCpp() try: for csv in args.csv: msg_cpp.load(csv) if args.header_dir is not None: os.makedirs(args.header_dir, exist_ok=True) if args.source_dir is not None: os.makedirs(args.source_dir, exist_ok=True) if args.device_name is not None: msg_cpp.write_msg_defs_header(f"{args.device_name}", args.header_dir, args.namespace, args.proto) msg_cpp.write_msg_defs_source(f"{args.device_name}", args.source_dir, args.namespace, args.proto) except Exception as e: print('Error: %s' % e) sys.exit(1) if __name__ == "__main__": # calling main function main()