#!/usr/bin/env python3
#
# Author: Yipeng Sun <syp at umd dot edu>
# License: BSD 2-clause
# Last Change: Mon Jul 08, 2019 at 03:35 AM -0400

import yaml

from argparse import ArgumentParser
from pyBabyMaker.io.TupleDump import PyTupleDump


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

def parse_input():
    parser = ArgumentParser(description='''
dump ntuple tree-branch structure, and branch datatype.''')

    parser.add_argument('input',
                        help='''
specify path to input ntuple file.''')

    parser.add_argument('output',
                        help='''
specify path to output YAML file.''')

    parser.add_argument('-f', '--output-format',
                        dest='formatter',
                        nargs='?',
                        choices=['yaml', 'plain'],
                        default='yaml',
                        help='''
select output format.''')

    return parser.parse_args()


####################
# Output formatter #
####################

def yaml_formatter(data, output_filename):
    with open(output_filename, 'w') as f:
        yaml.dump(data, f, default_flow_style=False)


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

if __name__ == '__main__':
    args = parse_input()

    dumper = PyTupleDump(args.input)
    data = dumper.dump()

    if args.formatter == 'yaml':
        yaml_formatter(data, args.output)
