#!python

import argparse
import traceback
import importlib.util
from director import red
from director import Director

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file', required=True)
parser.add_argument('-t', '--task', required=True)
parser.add_argument('-c', '--config', required=True)
parser.add_argument('-v', '--verbose', default=2)
parser.add_argument('args', nargs='*')
args, unknown = parser.parse_known_args()

spec = importlib.util.spec_from_file_location('tasks', args.file)
tasks = importlib.util.module_from_spec(spec)
spec.loader.exec_module(tasks)

verbose = int(args.verbose)

director = Director(args.config, verbose)
method = getattr(tasks, args.task)

try:
    method(director, args)
    director.log('...done', 2)
except Exception as e:
    director.log(red(traceback.format_exc()), 0)
