fix(nix-monitor): cancel running check if it took more than threshold

This commit is contained in:
avivbintangaringga
2026-07-14 16:32:59 +07:00
parent 401cca4f7e
commit 465cbb2456
3 changed files with 32 additions and 7 deletions
+21 -7
View File
@@ -22,8 +22,10 @@ end
local branch = cfg("branch")
local updateCheckInterval = cfg("check_interval")
local checkDurationThreshold = cfg("check_duration_threshold")
local systemStatsCheckInterval = cfg("system_stats_check_interval")
local completedCommands = 0
local isInit = true
local localHashCmd = "nixos-version --hash 2> /dev/null | cut -c -7"
local remoteHashCmd = "sleep 5 && git ls-remote https://github.com/NixOS/nixpkgs " .. branch .. " 2>/dev/null | cut -c 1-7"
@@ -34,7 +36,8 @@ local hmCurrentGenCmd = "home-manager generations | grep '(current)' | awk '{pri
local storeSizeCmd = `du -s --block-size=1GiB /nix/store | awk '\{print $1 " GiB"\}'`
local closureSizeCmd = "nix path-info --closure-size --human-readable /run/current-system | awk '{print $2, $3}'"
setState("lastCheckTime", 0)
setState("lastRunTime", os.time())
setState("lastCheckTime", os.time())
setState("lastCheckTimeStr", "n/a")
setState("localHash", "n/a")
setState("remoteHash", "n/a")
@@ -50,10 +53,15 @@ setState("storeSize", "•••")
setState("closureSize", "•••")
function update()
if (os.time() - getState("lastCheckTime")) >= 60 * updateCheckInterval then
if isInit or (os.time() - getState("lastCheckTime")) >= 60 * updateCheckInterval then
isInit = false
checkUpdate()
end
if getState("isRunning") and (os.time() - getState("lastRunTime")) >= 60 * checkDurationThreshold then
cancelCheck()
end
if (os.time() - getState("lastSystemStatsCheckTime")) >= 60 * systemStatsCheckInterval then
checkSystemStats()
end
@@ -64,8 +72,7 @@ function checkUpdate()
return
end
setState("lastCheckTime", os.time())
noctalia.runAsync("date '+%Y-%m-%d %H:%M'", function(date) setState("lastCheckTimeStr", date.stdout) end)
setState("lastRunTime", os.time())
if cfg("show_checking_notification") then
noctalia.notify(tr("notification.checking_update"))
@@ -115,18 +122,25 @@ function onHashCheckCompleted()
noctalia.notify(tr("notification.update_check_completed"))
end
setState("lastCheckTime", os.time())
noctalia.runAsync("date '+%Y-%m-%d %H:%M'", function(date) setState("lastCheckTimeStr", date.stdout) end)
setState("isRunning", false)
end
function cancelCheck()
noctalia.runAsync(`kill $(ps -ef | grep "git ls-remote https://github.com/NixOS/nixpkgs" | grep -v grep | awk '\{print $2\}')`)
setState("isRunning", false)
completedCommands = 0
end
watchState("command", function(command)
if command == "check" then
checkUpdate()
end
if command == "cancel" then
noctalia.runAsync(`kill $(ps -ef | grep "git ls-remote https://github.com/NixOS/nixpkgs" | grep -v grep | awk '\{print $2\}')`)
setState("isRunning", false)
completedCommands = 0
cancelCheck()
end
end)