#!/usr/bin/env python
# Licensed under a 3-clause BSD style license - see LICENSE.rst

from __future__ import (absolute_import, unicode_literals, division,
                        print_function)

from maltpynt.mp_read_events import mp_treat_event_file
import argparse
import logging
from multiprocessing import Pool
import functools

description = ('Read a cleaned event files and saves the relevant '
               'information in a standard format')
parser = argparse.ArgumentParser(description=description)
parser.add_argument("files", help="List of files", nargs='+')
parser.add_argument("--loglevel",
                    help=("use given logging level (one between INFO, "
                          "WARNING, ERROR, CRITICAL, DEBUG; default:WARNING)"),
                    default='WARNING',
                    type=str)
parser.add_argument("--nproc",
                    help=("Number of processors to use"),
                    default=1,
                    type=int)
parser.add_argument("--noclobber",
                    help=("Do not overwrite existing event files"),
                    default=False, action='store_true')
parser.add_argument("-g", "--gti-split",
                    help="Split event list by GTI",
                    default=False,
                    action="store_true")
parser.add_argument("--debug", help="use DEBUG logging level",
                    default=False, action='store_true')

if __name__ == '__main__':
    args = parser.parse_args()
    files = args.files

    if args.debug:
        args.loglevel = 'DEBUG'

    numeric_level = getattr(logging, args.loglevel.upper(), None)
    logging.basicConfig(filename='MPreadevents.log', level=numeric_level,
                        filemode='w')

    _wrap_fun = functools.partial(mp_treat_event_file,
                                  noclobber=args.noclobber,
                                  gti_split=args.gti_split)

    pool = Pool(processes=args.nproc)
    for i in pool.imap_unordered(_wrap_fun, files):
        pass
    pool.close()
