about summary refs log tree commit diff stats
path: root/lua/pomo.lua
blob: 75e4c1ec537525dd6d98ce8a39131e5f6d68d9b3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
-- title:  pomo
-- author: eli_oat
-- about:  a very tiny pomodoro timer

local pomo = {
    _version = "2022.03"
}

local defaults = {
    pomoTime = 1500,    -- time for a pomodoro in seconds
    restTime = 600,     -- time for a short rest in seconds
    longRestTime = 900, -- time for a long rest in sseconds
    pomoCount = 0       -- used to count pomodoros before a long rest
}

local pomoTime = defaults.pomoTime
local restTime = defaults.restTime
local longRestTime = defaults.longRestTime
local pomoCount = defaults.pomoCount

local function sleep (a)
    local sec = tonumber(os.clock() + a)
    while (os.clock() < sec) do
    end
end

local function prettyTime (timeInSeconds)
    local minutes = math.floor(timeInSeconds / 60)
    local seconds = timeInSeconds % 60
    local timeDisplay = string.format('%02d:%02d', minutes, seconds)
    return timeDisplay
end

function pomo ()
    os.execute('clear')
    repeat
        io.write('🍅 ' .. prettyTime(pomoTime) .. '\n')
        pomoTime = pomoTime - 1
        sleep(1)
        os.execute('clear')
    until pomoTime == 0

    while pomoTime == 0 and pomoCount < 4 do
        io.write('😴 ' .. prettyTime(restTime) .. '\n')
        restTime = restTime - 1
        sleep(1)
        os.execute('clear')
        while restTime == 0 do
            restTime = defaults.restTime
            pomoTime = defaults.pomoTime
            pomoCount = pomoCount + 1
            pomo()
        end
    end

    while pomoCount == 4 do
        io.write('🍹 LONG REST! ' .. prettyTime(longRestTime) .. '\n')
        longRestTime = longRestTime - 1
        sleep(1)
        os.execute('clear')
        while longRestTime == 0 do
            restTime = defaults.restTime
            pomoTime = defaults.pomoTime
            longRestTime = defaults.longRestTime
            pomoCount = defaults.pomoCount
            pomo()
        end
    end
end

return pomo