#! /usr/bin/env python

import sys
import traceback

from optparse import OptionParser

from doit.main import Main

usage = "usage: %prog [options] [tasks]"
parser = OptionParser(usage)
parser.add_option("-f","--file",dest="file",default="dodo.py",
                  help="load task from dodo FILE [default: %default]")
parser.add_option("-v","--verbosity",dest="verbosity",default=0,
                  help="0 capture stdout/stderr from task. 1 capture stdout only. 2 dont capture anything. [default: %default]")
parser.add_option("-a","--always-execute",action="store_true",
                  dest="alwaysExecute", default=False,
                  help="always execute tasks even if up-to-date [default: %default]")
parser.add_option("-l","--list",action="store_const",const=1,dest="list",
                  default=0,
                  help="list tasks from dodo file [default: %default]")
parser.add_option("--list-all",action="store_const",const=2,dest="list",
                  default=0,
                  help="list all tasks and sub-tasks from dodo file [default: %default]")

(options,args) = parser.parse_args()

# execute it

        
def main(fileName, **kargs):
    try:
        m = Main(fileName, ".doit.dbm", **kargs)
        return m.process()
    # make sure exception is printed out. we migth have redirected stderr
    except Exception:
        sys.__stderr__.write(traceback.format_exc())
        return -1
    

result = main(options.file, verbosity=options.verbosity, 
              list_=options.list, alwaysExecute=options.alwaysExecute, 
              filter_=args)

sys.exit(result)
