58 lines
1.8 KiB
Python
Executable File
58 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
from datetime import date, datetime, timedelta
|
|
import argparse
|
|
import os
|
|
|
|
def get_current_date():
|
|
return date.today().strftime("%Y-%m-%d")
|
|
|
|
def get_timefile_line(date, time, desc):
|
|
return date + " " + time + " " + desc + "\n"
|
|
|
|
# Parse command line arguments
|
|
parser = argparse.ArgumentParser(prog='time.txt', description="Description")
|
|
subparsers = parser.add_subparsers(help='sub-command help', dest='mode')
|
|
|
|
parser.add_argument("-f", "--file")
|
|
|
|
# create the parser for the "a" command
|
|
parser_a = subparsers.add_parser('total', help='a help')
|
|
|
|
# create the parser for the "b" command
|
|
parser_b = subparsers.add_parser('add', 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()
|
|
|
|
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)
|
|
|
|
elif args.mode == "add":
|
|
with open(filename, 'a') as time_file:
|
|
time_file.write(get_timefile_line(args.date, args.time, args.description))
|
|
|
|
elif args.mode == "create":
|
|
if (os.path.exists(filename)):
|
|
print("Error: File", filename, "already exists, can't create a new one!")
|
|
else:
|
|
with open(filename, 'w') as time_file:
|
|
time_file.write(get_timefile_line(get_current_date(), "00:01", "Setup time.txt"))
|