pomodoroprompt/pomodoroprompt.py

65 lines
2 KiB
Python

import csv
import time
from datetime import datetime, timedelta
import pytz
import zenipy
WORK_MIN = .1
SHORT_MIN = .1
LONG_MIN = 15
def pomodoro_prompt_plan(whatdid = ''):
whatnext = zenipy.zenipy.entry(text="What're you gonna do?", placeholder=whatdid, title='Pomodoro Prompt: Plan')
# Pressing cancel returns None, but we want to just treat it as an empty string.
if whatnext is None:
whatnext = ''
return whatnext
def pomodoro_prompt_report(whatnext):
whatdid = zenipy.zenipy.entry(text="What'd you do?", placeholder=whatnext, title='Pomodoro Prompt: Report')
# Pressing cancel returns None, but we want to just treat it as an empty string.
if whatdid is None:
whatdid = ''
return whatdid
def record_task(whatdid, start, end=None):
if end is None:
end = datetime.now(pytz.utc)
with open('timelog.csv', 'w', newline='') as csvfile:
timewriter = csv.writer(csvfile)
timewriter.writerow([start, end, whatdid])
def main():
whatnext = pomodoro_prompt_plan()
start = datetime.now(pytz.utc)
end = start + timedelta(minutes=WORK_MIN, seconds=0)
try:
print('Task -', whatnext)
while datetime.now(pytz.utc) <= end:
to_go = end-datetime.now(pytz.utc)
print('\r', str(to_go).split('.')[0], sep='', end='')
time.sleep(1)
whatdid = pomodoro_prompt_report(whatnext)
record_task(whatdid, start)
except KeyboardInterrupt:
print('\n{} time spent, save?'.format(str(diff).split('.')[0]))
choice = input('[y]/n: ').strip()
if choice.lower() in ('y', 'yes', ''):
whatdid = pomodoro_prompt_report(whatnext)
record_task(whatdid, start)
else:
print('What did you break?')
# If we somehow end up here, try a last-ditch effort to save.
record_task('Incomplete, interrupted task:' + whatnext, start)
# timelog.touch(exist_ok=True)
# with timelog.open('r+') as f:
# pp = PomodoroPrompt(timelog=f)
if __name__ == '__main__':
main()