#!/usr/bin/env python3
#
# Author: Yipeng Sun <syp at umd dot edu>
# License: BSD 2-clause
# Last Change: Fri Sep 04, 2020 at 04:01 AM +0800

from argparse import ArgumentParser
from pyBabyMaker.babymaker import BabyMaker
from pyBabyMaker.base import load_file


#################################
# Command line arguments parser #
#################################

def parse_input():
    parser = ArgumentParser(description='''
generate compilable C++ source file for ntuple processing.''')

    parser.add_argument('-i', '--input',
                        nargs='?',
                        required=True,
                        help='''
path to input YAML file.''')

    parser.add_argument('-o', '--output',
                        nargs='?',
                        required=True,
                        help='''
path to output C++ file.''')

    parser.add_argument('-d', '--data',
                        nargs='?',
                        required=True,
                        help='''
path to data ntuple file.''')

    parser.add_argument('--no-format',
                        action='store_false',
                        help='''
disable C++ code reformatter.''')

    parser.add_argument('-t', '--template-path',
                        nargs='?',
                        default='!:cpp_templates/babymaker.cpp',
                        help='''
specify template path.''')

    return parser.parse_args()


########
# Main #
########

if __name__ == '__main__':
    args = parse_input()
    template = load_file(args.template_path)
    maker = BabyMaker(args.input, args.data, template, args.no_format)
    maker.gen(args.output)
