about summary refs log tree commit diff stats
path: root/lua
diff options
context:
space:
mode:
authorelioat <elioat@tilde.institute>2022-10-07 23:57:59 +0000
committerelioat <elioat@tilde.institute>2022-10-07 23:57:59 +0000
commitf7dc77b3763ac444fa54e110639fadc6ba70174b (patch)
tree104c0fca807f88fff3564dfb696f1761d0426b5b /lua
parent1a6af4c104ea9d168f947ce082d0f6336f8ea036 (diff)
downloadtour-f7dc77b3763ac444fa54e110639fadc6ba70174b.tar.gz
*
Diffstat (limited to 'lua')
-rw-r--r--lua/app.lua33
-rw-r--r--lua/pomo.lua71
2 files changed, 104 insertions, 0 deletions
diff --git a/lua/app.lua b/lua/app.lua
new file mode 100644
index 0000000..6f01af8
--- /dev/null
+++ b/lua/app.lua
@@ -0,0 +1,33 @@
+local pomo = require "pomo"
+
+local remain_active = true;
+
+local function listener()
+	io.write('\n=====\nPomo Pomo Pomo!\n=====\n\n')
+	io.write('(s)tart a timer\n')
+	io.write('(q)uit the program\n')
+	io.write('\n* ')
+	local external_input = io.read()
+	return external_input
+end
+
+local function clear_screen()
+	os.execute("clear") -- FIXME: this won't work across systems, I don't think
+end
+
+local function process_input(input)
+	input = string.lower(input)
+	if (input == 's' or input == 'p' or input == 'start' or input == 'pomo') then
+		pomo()
+	elseif (input == 'quit' or input == 'q' or input == 'exit') then
+		remain_active = false
+	else
+		io.write('\nUnknown input, ' .. input .. '"\n')
+	end
+end
+
+while (remain_active) do
+	local person_input = listener()
+	clear_screen()
+	process_input(person_input)
+end
diff --git a/lua/pomo.lua b/lua/pomo.lua
new file mode 100644
index 0000000..75e4c1e
--- /dev/null
+++ b/lua/pomo.lua
@@ -0,0 +1,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