#!/usr/bin/env/python

import argparse
import re
import os

from lightcurve import LightCurve
from lightcurve import composite

#------------------------------------------------------------

def parse_args():
    '''
    Parse command line arguments.  Returns args object.
    '''
    parser = argparse.ArgumentParser()

    parser.add_argument('input', type=str, nargs='*',
                        help='filename of COS corrtag dataset' )

    parser.add_argument('--alt', dest='alt', type=float, default=None,
                        help='Maximum allowable altitude for the sun above the horizon')

    parser.add_argument('--no_filter', dest='filter', action='store_false', default=True,
                        help="Don't filter out airglow wavelengths.")

    parser.add_argument('--step', dest='step', type=float, default=1,
                        help='timestep for lightcurve in seconds')

    parser.add_argument('--wmin', dest='wmin', type=float, default=1,
                        help='Minimum wavelength for extraction')

    parser.add_argument('--wmax', dest='wmax', type=float, default=10000,
                        help='Maximum wavelength for extraction')

    parser.add_argument('--outname', dest='outname', type=str, default='composite_curve.fits',
                        help='Output lightcurve name')

    parser.add_argument('--cat', dest='concatenate', action='store_true', default=False,
                        help='Concatenate all input curves?')
    
    args = parser.parse_args()
    return args

#------------------------------------------------------------

if __name__ == "__main__":
    args = parse_args()

    all_datasets = args.input

    if args.concatenate:
        print "Concatenating datasets"
	composite(args.input, args.outname, trim=False)

    else:
        for dataset in all_datasets:
            out_lc = LightCurve(filename=dataset, 
                                step=args.step, 
                                wlim=(args.wmin, args.wmax), 
                                alt=args.alt,
                                filter=args.filter,
                                verbosity=1)
  
            out_lc.write(args.outname or curvename)

