#!/usr/bin/env python

import sys
import os
from optparse import OptionParser

parser = OptionParser(usage="usage: %prog [options] [file]")
parser.add_option("-o","--output", action="store", type="str", dest="output",
                  help="Output filename", default=None)
parser.add_option("--startrun", action="store", type="int", dest="startrun",
                  help="Start run", default=None)
parser.add_option("--startlb", action="store", type="int", dest="startlb",
                  help="Start lumiblock", default=None)
parser.add_option("--endrun", action="store", type="int", dest="endrun",
                  help="End run", default=None)
parser.add_option("--endlb", action="store", type="int", dest="endlb",
                  help="End lumiblock", default=None)
options, args = parser.parse_args()

if not sys.stdin.isatty():
    args = [sys.stdin]
if len(args) > 1:
    sys.exit("Too many arguments")

from goodruns import GRL, clipped

try:
    clippedgrl = clipped(GRL(args[0]),
                         startrun = options.startrun, startlb = options.startlb,
                         endrun = options.endrun, endlb = options.endlb)
except:
    print "not a valid grl"
    sys.exit(1)

if options.output is None:
    clippedgrl.write(sys.stdout, format = 'xml')
else:
    head, tail = os.path.split(options.output)
    if not tail:
        sys.exit("Invalid filename")
    if '.' not in tail:
        sys.exit("Filename must contain an extension")
    extension = tail.split('.')[-1]
    try:
        try:
            filehandle = open(options.output, 'w')
            clippedgrl.write(filehandle, format = extension)
        finally:
            filehandle.close()
    except Exception, ex:
        print ex
