better persistace
This commit is contained in:
parent
9c2ac4bc46
commit
bac26868d8
@ -1,5 +1,7 @@
|
||||
## dates and their corresponding seconds been here :)
|
||||
[24-10-08]
|
||||
u80864958_at_u80864958 = 425
|
||||
[24-10-07]
|
||||
u80864958_at_u80864958 = 432
|
||||
[24-10-08]
|
||||
u80864958_at_u80864958 = 372
|
||||
[24-10-11]
|
||||
u80864958_at_u80864958 = 5497
|
||||
|
103
lua/timer.lua
103
lua/timer.lua
@ -1,4 +1,4 @@
|
||||
function trim(s)
|
||||
local function trim(s)
|
||||
return (s:gsub("^%s*(.-)%s*$", "%1"))
|
||||
end
|
||||
|
||||
@ -107,6 +107,7 @@ local function log_total_time()
|
||||
local history = require("toml").parse(file:read("*a"))
|
||||
file:close()
|
||||
|
||||
print("Time for:", filename)
|
||||
|
||||
for _, day in pairs(history) do
|
||||
for user, time in pairs(day) do
|
||||
@ -144,53 +145,81 @@ local function focus_lost()
|
||||
})
|
||||
end
|
||||
|
||||
local function next_lowest_time_file()
|
||||
local file_path = filename
|
||||
|
||||
local function persist()
|
||||
local TOML = require("toml")
|
||||
local today = os.date("%y-%m-%d", os.time())
|
||||
local table = {}
|
||||
for _ = 1, 10, 1 do
|
||||
local f = io.open(file_path)
|
||||
|
||||
local file = io.open(filename, "r")
|
||||
-- if file exists read
|
||||
if file ~= nil then
|
||||
table = TOML.parse(file:read("*a"))
|
||||
file:close()
|
||||
end
|
||||
|
||||
-- write time to table
|
||||
if table[today] ~= nil and table[today][username] ~= nil then
|
||||
table[today][username] = table[today][username] + summ_time()
|
||||
else
|
||||
if table[today] == nil then
|
||||
table[today] = {}
|
||||
if f ~= nil then
|
||||
return file_path
|
||||
end
|
||||
table[today][username] = summ_time()
|
||||
|
||||
file_path = "../" .. file_path
|
||||
end
|
||||
|
||||
-- write table to file
|
||||
file = io.open(filename, "w")
|
||||
if file == nil then
|
||||
error("can't write to .timer file")
|
||||
return
|
||||
return ""
|
||||
end
|
||||
|
||||
local function persist(force)
|
||||
return function()
|
||||
local TOML = require("toml")
|
||||
local today = os.date("%y-%m-%d", os.time())
|
||||
local table = {}
|
||||
local file_path = filename
|
||||
|
||||
local file = io.open(file_path, "r")
|
||||
-- if file exists read
|
||||
if file ~= nil then
|
||||
table = TOML.parse(file:read("*a"))
|
||||
file:close()
|
||||
else
|
||||
if not force then
|
||||
file_path = next_lowest_time_file()
|
||||
if file_path == "" then
|
||||
print("No save file found. To create a new save file run :TimerSave")
|
||||
return
|
||||
end
|
||||
print("Save file found:", file_path)
|
||||
end
|
||||
end
|
||||
|
||||
-- write time to table
|
||||
if table[today] ~= nil and table[today][username] ~= nil then
|
||||
table[today][username] = table[today][username] + summ_time()
|
||||
else
|
||||
if table[today] == nil then
|
||||
table[today] = {}
|
||||
end
|
||||
table[today][username] = summ_time()
|
||||
end
|
||||
|
||||
-- write table to file
|
||||
file = io.open(file_path, "w")
|
||||
if file == nil then
|
||||
error("can't write to .timer file")
|
||||
return
|
||||
end
|
||||
|
||||
local tml = TOML.encode(table)
|
||||
|
||||
file:write("## dates and their corresponding seconds been here :)\n", tml, "\n")
|
||||
file:close()
|
||||
|
||||
print("Timer saved successfully :-)")
|
||||
|
||||
--reset timer
|
||||
clean_to = 1
|
||||
focus_events = {}
|
||||
focus_gained()
|
||||
end
|
||||
|
||||
local tml = TOML.encode(table)
|
||||
print(tml)
|
||||
|
||||
file:write("## dates and their corresponding seconds been here :)\n", tml, "\n")
|
||||
file:close()
|
||||
|
||||
--reset timer
|
||||
clean_to = 1
|
||||
focus_events = {}
|
||||
focus_gained()
|
||||
end
|
||||
|
||||
local function setup()
|
||||
vim.api.nvim_create_autocmd("VimEnter",
|
||||
{ group = augroup, desc = "Start Timer", once = true, callback = focus_gained })
|
||||
vim.api.nvim_create_autocmd("ExitPre",
|
||||
{ group = augroup, desc = "Persist timer", once = true, callback = persist })
|
||||
{ group = augroup, desc = "Persist timer", once = true, callback = persist(false) })
|
||||
vim.api.nvim_create_autocmd("FocusGained", { group = augroup, callback = focus_gained })
|
||||
vim.api.nvim_create_autocmd("FocusLost", { group = augroup, callback = focus_lost })
|
||||
|
||||
@ -206,7 +235,7 @@ local function setup()
|
||||
)
|
||||
vim.api.nvim_create_user_command(
|
||||
'TimerSave',
|
||||
persist,
|
||||
persist(true),
|
||||
{ nargs = 0 } -- No arguments for this command (you can configure this later)
|
||||
)
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user