From ebe9548fb350cdb02fc55f28e5468c153fcaeeac Mon Sep 17 00:00:00 2001 From: karl Date: Tue, 15 Dec 2020 21:38:01 +0100 Subject: [PATCH] Add bill option; fix negative minutes The minutes were positive even when the hours were negative. This is obviously undesired, we want the entire time to be negative. That was fixed. --- tx | 50 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/tx b/tx index 987a63d..5a8ad83 100755 --- a/tx +++ b/tx @@ -10,6 +10,28 @@ def get_current_date(): def get_timefile_line(date, time, desc): return date + " " + time + " " + desc + "\n" +def get_total(filename): + with open(filename, 'r') as time_file: + total_time = timedelta() + + for line in time_file: + date_time_description = line.split(" ", 2) + + hours, minutes = date_time_description[1].split(':', 1) + + # Parse the time to integers + hours_int = int(hours) + minutes_int = int(minutes) + + # Make sure that both the hours and the minutes are negative if there's a "-" before the time + if hours_int < 0: minutes_int *= -1 + + delta = timedelta(hours=hours_int, minutes=minutes_int) + + total_time += delta + + return total_time + # Parse command line arguments parser = argparse.ArgumentParser(prog='time.txt', description="Description") subparsers = parser.add_subparsers(help='sub-command help', dest='mode') @@ -25,6 +47,11 @@ parser_b.add_argument("date", nargs='?', default=get_current_date()) parser_b.add_argument("time") parser_b.add_argument("description") +parser_b = subparsers.add_parser('bill', help='b help') +parser_b.add_argument("date", nargs='?', default=get_current_date()) +parser_b.add_argument("time") +parser_b.add_argument("description") + parser_c = subparsers.add_parser('create', help='b help') args = parser.parse_args() @@ -32,22 +59,21 @@ args = parser.parse_args() filename = args.file if args.file else 'time.txt' if not args.mode or args.mode == "total": - with open(filename, 'r') as time_file: - total_time = timedelta() - - for line in time_file: - date_time_description = line.split(" ", 2) - - hours, minutes = date_time_description[1].split(':', 1) - delta = timedelta(hours=int(hours), minutes=int(minutes)) - - total_time += delta - - print('Total time: ', total_time) + print("Total time:", get_total(filename)) elif args.mode == "add": with open(filename, 'a') as time_file: + # TODO: Validate date and time time_file.write(get_timefile_line(args.date, args.time, args.description)) + + print("New total:", get_total(filename)) + +elif args.mode == "bill": + with open(filename, 'a') as time_file: + # TODO: Validate date and time + time_file.write(get_timefile_line(args.date, "-" + args.time, args.description)) + + print("New total:", get_total(filename)) elif args.mode == "create": if (os.path.exists(filename)):