#!/usr/bin/env python3
# vim: set filetype=python:
"""
Pomodoro timer

- Writes pomodoro timer to temporary file so statusbar can read it
- Notification on session finish
- Notification on break finish
"""

import os
import atexit
from argparse import ArgumentParser
from time import sleep
from plyer import notification

POMO_PATH = os.path.join(os.getenv("XDG_DATA_HOME", os.path.expanduser("~/.local/share")), "pomo")

@atexit.register
def clear():
    if os.path.exists(POMO_PATH):
        os.remove(POMO_PATH)

def format_mins_secs(mins, secs):
    return f"{mins:02d}:{secs:02d}"


def make_countdown():
    def countdown(duration):
        while duration != 0:
            mins = duration // 60
            secs = duration % 60
            time_str = format_mins_secs(mins, secs)
            os.system(f'echo -n "{time_str}" > {POMO_PATH}')
            sleep(1)
            duration -= 1
    return countdown


def main(args):
    work_duration = args.work_duration * 60
    break_duration = args.break_duration * 60
    repeats = args.repeats

    work_countdown = make_countdown()
    break_countdown = make_countdown()

    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


def handle_signal(signal, frame):
    # Wait for clear to finish
    clear()
    print('Exiting')
    exit(0)


if __name__ == '__main__':

    parser = ArgumentParser()
    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)
    parser.add_argument('-c', '--clear', action='store_true',
                        help='Clear timer')

    args = parser.parse_args()

    main(args)
