#!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)