From 07eec687063c58199d6183f7fbd5bd1028f024dc Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Sat, 9 Dec 2023 21:19:41 +0100 Subject: [PATCH] Refactor 'pomo' script --- .bin/pomo | 80 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/.bin/pomo b/.bin/pomo index 0b36e89..53a7f5d 100755 --- a/.bin/pomo +++ b/.bin/pomo @@ -1,4 +1,5 @@ -# /usr/bin/env python3 +#!/usr/bin/env python3 +# vim: set filetype=python: """ Pomodoro timer @@ -18,51 +19,58 @@ def clear(): os.system('echo -n "" > /tmp/pomo') -atexit.register(clear) - -parser = ArgumentParser() - -parser.add_argument('-p', '--prep-duration', type=int, - help='Pre session duration', default=0) -parser.add_argument('-w', '--work-duration', type=int, - help='Session duration', default=25) -parser.add_argument('-b', '--break-duration', type=int, - help='Break duration', default=5) -parser.add_argument('-r', '--repeats', type=int, - help='Numer of sessions', default=1) - -args = parser.parse_args() - -prep_duration = args.prep_duration * 60 -work_duration = args.work_duration * 60 -break_duration = args.break_duration * 60 -repeats = args.repeats +def format_mins_secs(mins, secs): + return f"{mins:02d}:{secs:02d}" -def make_countdown(color="#000000"): +def make_countdown(): def countdown(duration): while duration != 0: mins = duration // 60 secs = duration % 60 - # os.system('echo -n "{:s} {:02d}:{:02d} \x01" > /tmp/pomo'.format(color, mins, secs)) - os.system( - 'echo -n " {:02d}:{:02d} " > /tmp/pomo'.format(color, mins, secs)) + time_str = format_mins_secs(mins, secs) + os.system(f'echo -n "{time_str}" > /tmp/pomo') sleep(1) duration -= 1 return countdown -prep_countdown = make_countdown("#0000aa") -work_countdown = make_countdown("#aa0000") -break_countdown = make_countdown("#00bb00") +def main(args): + atexit.register(clear) -prep_countdown(prep_duration) + prep_duration = args.prep_duration * 60 + work_duration = args.work_duration * 60 + break_duration = args.break_duration * 60 + repeats = args.repeats -while repeats != 0: - notification.notify(title="Get started") - work_countdown(work_duration) - if break_duration != 0: - notification.notify(title="Time for a break") - break_countdown(break_duration) - notification.notify(title="Break is over, back to work") - repeats -= 1 + prep_countdown = make_countdown() + work_countdown = make_countdown() + break_countdown = make_countdown() + + prep_countdown(prep_duration) + + while repeats != 0: + notification.notify(title="Get started") + work_countdown(work_duration) + if break_duration != 0: + notification.notify(title="Time for a break") + break_countdown(break_duration) + notification.notify(title="Break is over, back to work") + repeats -= 1 + + +if __name__ == '__main__': + parser = ArgumentParser() + + parser.add_argument('-p', '--prep-duration', type=int, + help='Pre session duration', default=0) + parser.add_argument('-w', '--work-duration', type=int, + help='Session duration', default=25) + parser.add_argument('-b', '--break-duration', type=int, + help='Break duration', default=5) + parser.add_argument('-r', '--repeats', type=int, + help='Numer of sessions', default=1) + + args = parser.parse_args() + + main(args)