#!/usr/bin/env python
#
# Copyright (c) 2017 Ben Lindsay <benjlindsay@gmail.com>

from job_tree import job_tree
import sys
import os

standalone_double_dash_args = ['flat', 'submit']
str_double_dash_args = ['sub_file', 'sub_prog']
int_double_dash_args = ['sleep_time']
args = sys.argv[1:]
i_arg = 0
double_dash_done = False
tier_arg = False
kwargs = {'input_file_list': [], 'tier_list': []}
while i_arg < len(args):
    if args[i_arg].startswith('--'):
        if double_dash_done:
            raise ValueError("Arguments starting with '--' must come at beginning!")
        opt = args[i_arg].replace('--', '')
        if opt.startswith('no-'):
            value = False
            opt = opt.replace('no-', '')
        else:
            if opt in standalone_double_dash_args:
                value = True
            elif opt in str_double_dash_args:
                i_arg += 1
                value = args[i_arg]
            elif opt in int_double_dash_args:
                i_arg += 1
                value = int(args[i_arg])
            else:
                raise ValueError(args[i_arg] + " not recognized!")
        kwargs[opt] = value
    else:
        double_dash_done = True
        if args[i_arg] == '-t':
            tier_arg = True
        else:
            if tier_arg:
                kwargs['tier_list'].append(args[i_arg])
            else:
                kwargs['input_file_list'].append(args[i_arg])
    i_arg += 1

if len(kwargs['input_file_list']) == 0:
    raise ValueError("No job files found!")
if len(kwargs['tier_list']) == 0:
    print("No tier files provided. Looking for tier_*.csv files:")
    i = 1
    fname_template = 'tier_{}.csv'
    while True:
        fname = 'tier_{}.csv'.format(i)
        if not os.path.isfile(fname):
            break
        kwargs['tier_list'].append(fname)
        i += 1
    if i > 1:
        print("Found {}".format(kwargs['tier_list']))
    else:
        raise ValueError("No tier files found!")

job_tree(**kwargs)
