88 lines
2.1 KiB
Python
Executable File
88 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os
|
|
import sys
|
|
import getopt
|
|
|
|
from CmdWindow import CmdWindow
|
|
from Command import Command
|
|
from DataStore import DataStore
|
|
|
|
PROGRAM_NAME = 'dwtt'
|
|
|
|
def usage():
|
|
print '''Usage: dwtt [options] [dbfile]
|
|
Options:
|
|
--help Show this help
|
|
'''
|
|
|
|
def main(argv):
|
|
try:
|
|
opts, args = getopt.getopt(argv[1:], "", ["help"])
|
|
except getopt.GetoptError:
|
|
usage()
|
|
sys.exit(1)
|
|
|
|
for opt, arg in opts:
|
|
if opt == "--help":
|
|
usage()
|
|
sys.exit()
|
|
else:
|
|
usage()
|
|
sys.exit(3)
|
|
|
|
timedbfile = os.path.expanduser('~') + os.path.sep + '.dwtt.db'
|
|
if len(args) >= 1:
|
|
timedbfile = args[0]
|
|
|
|
ds = DataStore(timedbfile)
|
|
|
|
while True:
|
|
cmdline = doCmdWindow()
|
|
cmd = Command(cmdline)
|
|
if not processCommand(cmd, ds):
|
|
break
|
|
|
|
def doCmdWindow():
|
|
c = CmdWindow()
|
|
return c.main()
|
|
|
|
def processStart(cmd, store):
|
|
pass
|
|
|
|
def processOut(cmd, store):
|
|
pass
|
|
|
|
def processTask(cmd, store):
|
|
parts = cmd.argstr.split(',', 1)
|
|
fullname = parts[0].strip()
|
|
longname = '' if len(parts) < 2 else parts[1].strip()
|
|
nameparts = fullname.split(':')
|
|
task = store.getTaskByName(fullname)
|
|
if task is not None:
|
|
# the task already exists, update it
|
|
store.updateTask(task.taskid, nameparts[-1], longname)
|
|
return False
|
|
parenttaskname = ':'.join(nameparts[:-1])
|
|
parenttask = store.getTaskByName(parenttaskname)
|
|
if parenttask is None:
|
|
return 'Parent task not found'
|
|
store.createTask(nameparts[-1].strip(), longname, parenttask.taskid)
|
|
return False
|
|
|
|
COMMAND_HANDLERS = {
|
|
'start' : processStart,
|
|
'out' : processOut,
|
|
'task' : processTask
|
|
}
|
|
|
|
# Returns boolean for whether the command prompt should be displayed again
|
|
def processCommand(cmd, store):
|
|
if cmd.command in COMMAND_HANDLERS:
|
|
return COMMAND_HANDLERS[cmd.command](cmd, store)
|
|
# todo: error on command not found
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv)
|