#! /usr/bin/env python

"""\
%prog <infile> <outfile>

Convert between natively YODA-supported data formats (.yoda, .aida, .dat)

TODO:
 * Support reading/writing from ROOT... or wait for native ROOT I/O via Reader/Writer classes?
"""

import yoda, os, sys, optparse, re
# TODO: Support an extra arg or option to choose the target format and hence convert many files at once with auto-naming
# from yoda.script_helpers import parse_x2y_args

parser = optparse.OptionParser(usage=__doc__)
parser.add_option("-m", "--match", dest="MATCH", metavar="PATT", default=None,
                  help="only write out histograms whose path matches this regex")
parser.add_option("-M", "--unmatch", dest="UNMATCH", metavar="PATT", default=None,
                  help="exclude histograms whose path matches this regex")

opts, args = parser.parse_args()
if not len(args) == 2:
    sys.stderr.write("You must specify the in and out file names\n")
    sys.exit(1)
i, o = args

## Read, filter, and write out histos
from yoda.script_helpers import filter_aos
aos = yoda.read(i)
filter_aos(aos, opts.MATCH, opts.UNMATCH)
yoda.write(aos, o)
