[work] Add parse command
This commit is contained in:
parent
30d4a9ef90
commit
17ac8d0685
1 changed files with 29 additions and 22 deletions
51
bin/work
51
bin/work
|
@ -49,27 +49,6 @@ def td_format(td):
|
||||||
return '{:d}:{:02d}'.format(int(hours), int(minutes))
|
return '{:d}:{:02d}'.format(int(hours), int(minutes))
|
||||||
|
|
||||||
|
|
||||||
def convert_manual_entry():
|
|
||||||
for line in sys.stdin:
|
|
||||||
fields = line.split(",")
|
|
||||||
if len(fields) < 6:
|
|
||||||
break
|
|
||||||
morning = datetime.strptime(fields[1], "%H:%M")
|
|
||||||
break_start = datetime.strptime(fields[2], "%H:%M")
|
|
||||||
break_end = datetime.strptime(fields[3], "%H:%M")
|
|
||||||
evening = datetime.strptime(fields[4], "%H:%M")
|
|
||||||
break_time = break_end - break_start
|
|
||||||
full_day = evening - morning
|
|
||||||
work_day = full_day - break_time
|
|
||||||
print('{},{},{},{},{},{}'.format(
|
|
||||||
fields[0],
|
|
||||||
morning.strftime("%H:%M"),
|
|
||||||
evening.strftime("%H:%M"),
|
|
||||||
td_format(break_time),
|
|
||||||
td_format(work_day),
|
|
||||||
"".join(fields[5:]).strip()))
|
|
||||||
|
|
||||||
|
|
||||||
def get_today_fields():
|
def get_today_fields():
|
||||||
try:
|
try:
|
||||||
with open(TODAY_FILE, "r") as f:
|
with open(TODAY_FILE, "r") as f:
|
||||||
|
@ -161,7 +140,34 @@ def work_export(args):
|
||||||
|
|
||||||
|
|
||||||
def work_parse(args):
|
def work_parse(args):
|
||||||
print("parse")
|
new_lines = []
|
||||||
|
try:
|
||||||
|
with open(args.file, "r") as f:
|
||||||
|
for line in f:
|
||||||
|
fields = line.split(",")
|
||||||
|
if len(fields) < 6:
|
||||||
|
break
|
||||||
|
morning = datetime.strptime(fields[1], "%H:%M")
|
||||||
|
break_start = datetime.strptime(fields[2], "%H:%M")
|
||||||
|
break_end = datetime.strptime(fields[3], "%H:%M")
|
||||||
|
evening = datetime.strptime(fields[4], "%H:%M")
|
||||||
|
break_time = break_end - break_start
|
||||||
|
full_day = evening - morning
|
||||||
|
work_day = full_day - break_time
|
||||||
|
new_lines.append('{},{},{},{},{},{}'.format(
|
||||||
|
fields[0],
|
||||||
|
morning.strftime("%H:%M"),
|
||||||
|
evening.strftime("%H:%M"),
|
||||||
|
td_format(break_time),
|
||||||
|
td_format(work_day),
|
||||||
|
"".join(fields[5:]).strip()))
|
||||||
|
except FileNotFoundError:
|
||||||
|
die("file not found: {}".format(args.file))
|
||||||
|
# TODO do sanity checking, like if a day already exists
|
||||||
|
with open(TIME_FILE, "a") as f:
|
||||||
|
for line in new_lines:
|
||||||
|
f.write("{}\n".format(line))
|
||||||
|
log("Written {} new entries to {}".format(len(new_lines), TIME_FILE))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -184,6 +190,7 @@ if __name__ == "__main__":
|
||||||
end_parser.set_defaults(func=work_end)
|
end_parser.set_defaults(func=work_end)
|
||||||
export_parser.set_defaults(func=work_export)
|
export_parser.set_defaults(func=work_export)
|
||||||
parse_parser.set_defaults(func=work_parse)
|
parse_parser.set_defaults(func=work_parse)
|
||||||
|
parse_parser.add_argument("file")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
args.func(args)
|
args.func(args)
|
||||||
|
|
Loading…
Reference in a new issue