#!/usr/bin/python2.7
import sys, time
from inception.argparsers import BootstrapArgParser,PlantArgParser,\
    LearnArgParser, SyncArgParser, AutorootArgParser,\
    BusyboxArgParser, LsArgParser, MakeArgParser
from inception.argparsers.exceptions import InceptionArgParserException
from inception import __version__
import logging
logging.basicConfig(level = logging.DEBUG)

if __name__ == "__main__":
    args = sys.argv
    if(len(args) > 1):
        del args[0]


    modeDict = {
        "bootstrap": BootstrapArgParser,
        #"bootstrap2": BootstrapCommandParser2,
        "make": MakeArgParser,
        "plant": PlantArgParser,
        "learn": LearnArgParser,
        "sync": SyncArgParser,
        "autoroot": AutorootArgParser,
        "busybox": BusyboxArgParser,
        "ls": LsArgParser,
        "version": None
    }

    if(len(args) == 0 or args[0] not in modeDict):
        print("Available commands:\n===================")
        print(", ".join(modeDict.keys()))

        sys.exit(1)

    mode = args[0]
    if mode == "version":
        print(__version__)
        sys.exit(0)
    parser = modeDict[mode]()
    #args = vars(parser.parse_args())
    #if len(sys.argv) == 1:

    try:
        start = int(time.time())
        if not parser.process():
            parser.print_help()
        else:
            end = int(time.time())
            elapsed = end - start
            if parser.trackTime():
                print("Finished in %s seconds" % elapsed)
    except InceptionArgParserException as e:
        print("ERROR!!\n%s" % e)
        sys.exit(1)

