Added add command.
1.1 --- a/cronrec.py Tue Oct 05 14:44:31 2010 +0200
1.2 +++ b/cronrec.py Tue Oct 05 15:19:14 2010 +0200
1.3 @@ -29,6 +29,8 @@
1.4
1.5 CONFIG_FILE = "%s/.cronrecrc" % HOMEDIR
1.6
1.7 +DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
1.8 +
1.9 def read_config():
1.10 config = {}
1.11 with open(CONFIG_FILE, "r") as config_stream:
1.12 @@ -78,27 +80,23 @@
1.13 if not db_exists:
1.14 db.init(db_file())
1.15
1.16 -def begin(args):
1.17 - project = None
1.18 - activity = None
1.19 - label = args.label.strip()
1.20 +def parse_label(label):
1.21 + label = label.strip()
1.22 if ":" in label:
1.23 project, activity = label.split(":")
1.24 else:
1.25 - project = label
1.26 + project, activity = (label, None)
1.27 + return project, activity
1.28 +
1.29 +def begin(args):
1.30 + project, activity = parse_label(args.label)
1.31 time = datetime.now()
1.32 db.resume(db_file(), None, None, time)
1.33 db.begin(db_file(), project, activity, time)
1.34
1.35 def end(args):
1.36 - project = None
1.37 - activity = None
1.38 - label = args.label.strip()
1.39 - log = args.m
1.40 - if ":" in label:
1.41 - project, activity = label.split(":")
1.42 - else:
1.43 - project = label
1.44 + project, activity = parse_label(args.label)
1.45 + log = args.m
1.46 time = datetime.now()
1.47 db.resume(db_file(), db.find_active_task(db_file()), time, log)
1.48 db.end(db_file(), project, activity, time, log)
1.49 @@ -109,6 +107,14 @@
1.50 def resume(args):
1.51 db.resume(db_file(), None, None, datetime.now(), args.m)
1.52
1.53 +def add_task(args):
1.54 + project, activity = parse_label(args.label)
1.55 + log = args.m
1.56 + begin = datetime.strptime(args.begin, DATETIME_FORMAT)
1.57 + end = datetime.strptime(args.end, DATETIME_FORMAT)
1.58 + db.begin(db_file(), project, activity, begin)
1.59 + db.end(db_file(), project, activity, end, log)
1.60 +
1.61 def status(args):
1.62 task = db.status(db_file())
1.63 if task:
1.64 @@ -122,9 +128,10 @@
1.65 config = read_config()
1.66 parser = argparse.ArgumentParser(description="Records time.")
1.67 subs = parser.add_subparsers()
1.68 - sub_begin = subs.add_parser("init")
1.69 - sub_begin.add_argument("working_path", type=str)
1.70 - sub_begin.set_defaults(func=init)
1.71 +
1.72 + sub_init = subs.add_parser("init")
1.73 + sub_init.add_argument("working_path", type=str)
1.74 + sub_init.set_defaults(func=init)
1.75
1.76 sub_begin = subs.add_parser("begin")
1.77 sub_begin.add_argument("label", type=str)
1.78 @@ -135,15 +142,24 @@
1.79 sub_end.add_argument("-m", type=str)
1.80 sub_end.set_defaults(func=end)
1.81
1.82 - sub_end = subs.add_parser("pause")
1.83 - sub_end.set_defaults(func=pause)
1.84 + sub_pause = subs.add_parser("pause")
1.85 + sub_pause.set_defaults(func=pause)
1.86
1.87 - sub_end = subs.add_parser("resume")
1.88 - sub_end.add_argument("-m", type=str)
1.89 - sub_end.set_defaults(func=resume)
1.90 + sub_resume = subs.add_parser("resume")
1.91 + sub_resume.add_argument("-m", type=str)
1.92 + sub_resume.set_defaults(func=resume)
1.93
1.94 - sub_end = subs.add_parser("status")
1.95 - sub_end.set_defaults(func=status)
1.96 + sub_add = subs.add_parser("add")
1.97 + sub_add_subs = sub_add.add_subparsers()
1.98 + sub_add_task = sub_add_subs.add_parser("task")
1.99 + sub_add_task.add_argument("label", type=str)
1.100 + sub_add_task.add_argument("begin", type=str)
1.101 + sub_add_task.add_argument("end", type=str)
1.102 + sub_add_task.add_argument("-m", type=str)
1.103 + sub_add_task.set_defaults(func=add_task)
1.104 +
1.105 + sub_status = subs.add_parser("status")
1.106 + sub_status.set_defaults(func=status)
1.107
1.108 args = parser.parse_args()
1.109 args.func(args)