#!/usr/bin/env python

import sys
import time
from glob import glob
from os import path
import numpy as np
import pandas as pd
from datetime import timedelta
import MK8D as mk


(PATH_I, PATH_O, FILE_O, CENTER) = (
    sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]
)
TRACKS = ['Start']
TRACKS.extend(mk.TRACKS)
###############################################################################
# Get files from paths
###############################################################################
files = glob(path.join(PATH_I))
print('Parsing {} files to Tracks CSV dataframe.'.format(len(files)))
# data = mk.compileRunsDataframeFromFiles(files, prependID=True)
data = pd.read_csv(PATH_I)
###############################################################################
# Filter finished runs and convert to cumulative time
###############################################################################
fshdRuns = mk.getFinishedRuns(data, TRACKS)
fshdRunsIDs = sorted(list(mk.getFinishedRunsID(data, TRACKS)))
runsCTimes = mk.convertFinishedRunsToCTimes(fshdRuns, fshdRunsIDs, TRACKS)
###############################################################################
# Center around metric
###############################################################################
if CENTER == 'mean':
    cFun = np.mean
elif CENTER == 'median':
    cFun = np.median
elif CENTER == 'min':
    cFun = np.min
elif CENTER == 'max':
    cFun = np.max
runsCTimesC = mk.centerRunsCTimes(runsCTimes, centerFunction=cFun)
runsCTimesC['Split'] = [
    str(timedelta(seconds=i)) for i in runsCTimesC['Time']
]
###############################################################################
# Export to file
###############################################################################
runsCTimesC.to_csv(path.join(PATH_O, FILE_O), index=False)