diff -r fab8e1981155 -r 37ab6d0ddb30 cronrec.py --- a/cronrec.py Tue Oct 05 14:44:31 2010 +0200 +++ b/cronrec.py Tue Oct 05 15:19:14 2010 +0200 @@ -29,6 +29,8 @@ CONFIG_FILE = "%s/.cronrecrc" % HOMEDIR +DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S" + def read_config(): config = {} with open(CONFIG_FILE, "r") as config_stream: @@ -78,27 +80,23 @@ if not db_exists: db.init(db_file()) -def begin(args): - project = None - activity = None - label = args.label.strip() +def parse_label(label): + label = label.strip() if ":" in label: project, activity = label.split(":") else: - project = label + project, activity = (label, None) + return project, activity + +def begin(args): + project, activity = parse_label(args.label) time = datetime.now() db.resume(db_file(), None, None, time) db.begin(db_file(), project, activity, time) def end(args): - project = None - activity = None - label = args.label.strip() - log = args.m - if ":" in label: - project, activity = label.split(":") - else: - project = label + project, activity = parse_label(args.label) + log = args.m time = datetime.now() db.resume(db_file(), db.find_active_task(db_file()), time, log) db.end(db_file(), project, activity, time, log) @@ -109,6 +107,14 @@ def resume(args): db.resume(db_file(), None, None, datetime.now(), args.m) +def add_task(args): + project, activity = parse_label(args.label) + log = args.m + begin = datetime.strptime(args.begin, DATETIME_FORMAT) + end = datetime.strptime(args.end, DATETIME_FORMAT) + db.begin(db_file(), project, activity, begin) + db.end(db_file(), project, activity, end, log) + def status(args): task = db.status(db_file()) if task: @@ -122,9 +128,10 @@ config = read_config() parser = argparse.ArgumentParser(description="Records time.") subs = parser.add_subparsers() - sub_begin = subs.add_parser("init") - sub_begin.add_argument("working_path", type=str) - sub_begin.set_defaults(func=init) + + sub_init = subs.add_parser("init") + sub_init.add_argument("working_path", type=str) + sub_init.set_defaults(func=init) sub_begin = subs.add_parser("begin") sub_begin.add_argument("label", type=str) @@ -135,15 +142,24 @@ sub_end.add_argument("-m", type=str) sub_end.set_defaults(func=end) - sub_end = subs.add_parser("pause") - sub_end.set_defaults(func=pause) + sub_pause = subs.add_parser("pause") + sub_pause.set_defaults(func=pause) - sub_end = subs.add_parser("resume") - sub_end.add_argument("-m", type=str) - sub_end.set_defaults(func=resume) + sub_resume = subs.add_parser("resume") + sub_resume.add_argument("-m", type=str) + sub_resume.set_defaults(func=resume) - sub_end = subs.add_parser("status") - sub_end.set_defaults(func=status) + sub_add = subs.add_parser("add") + sub_add_subs = sub_add.add_subparsers() + sub_add_task = sub_add_subs.add_parser("task") + sub_add_task.add_argument("label", type=str) + sub_add_task.add_argument("begin", type=str) + sub_add_task.add_argument("end", type=str) + sub_add_task.add_argument("-m", type=str) + sub_add_task.set_defaults(func=add_task) + + sub_status = subs.add_parser("status") + sub_status.set_defaults(func=status) args = parser.parse_args() args.func(args)