aboutsummaryrefslogtreecommitdiffstats
path: root/updates/web/chromium/check-chromium-extension-updates.lua
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar@gmail.com>2026-09-09 17:59:08 +0530
committerArpit Chakladar <arpitchakladar@gmail.com>2026-09-09 17:59:08 +0530
commit022e4a37219c2ad8f0aa6cbb8281b060b7e98bf0 (patch)
tree503734d082f6ec389b5ebdf359e0554617e7109d /updates/web/chromium/check-chromium-extension-updates.lua
parent11fbd1121cd58fd2807fb973b43c14a5aabb59ea (diff)
downloadhome-manager-config-022e4a37219c2ad8f0aa6cbb8281b060b7e98bf0.tar.gz
home-manager-config-022e4a37219c2ad8f0aa6cbb8281b060b7e98bf0.zip
feat(updates): porting check-chromium-extensions to lua
Diffstat (limited to 'updates/web/chromium/check-chromium-extension-updates.lua')
-rw-r--r--updates/web/chromium/check-chromium-extension-updates.lua56
1 files changed, 56 insertions, 0 deletions
diff --git a/updates/web/chromium/check-chromium-extension-updates.lua b/updates/web/chromium/check-chromium-extension-updates.lua
new file mode 100644
index 0000000..815e8a4
--- /dev/null
+++ b/updates/web/chromium/check-chromium-extension-updates.lua
@@ -0,0 +1,56 @@
+#!/usr/bin/env luajit
+-- Checks for updated Chromium extensions against their GitHub releases/tags.
+
+local extensions = {
+ -- NOTE: replaced by the derivation build step, with the
+ -- detailed list of all extensions that we need to check
+ --@@EXTENSIONS@@--
+}
+
+local function printf(fmt, ...)
+ io.write(string.format(fmt, ...))
+end
+
+print("Checking for Chromium extension updates...")
+print("----------------------------------------------")
+print("")
+
+for _, ext in ipairs(extensions) do
+ local isTag = ext.updateType == "tag"
+ local endpoint
+ local jqFilter
+ if isTag then
+ endpoint = string.format("https://api.github.com/repos/%s/%s/tags", ext.owner, ext.repo)
+ jqFilter = ".[0].name"
+ else
+ endpoint = string.format("https://api.github.com/repos/%s/%s/releases/latest", ext.owner, ext.repo)
+ jqFilter = ".tag_name"
+ end
+
+ local proc = io.popen(string.format("curl -sL --fail %q | jq -r %q", endpoint, jqFilter))
+ local latestRaw = (proc and proc:read("*a") or ""):gsub("%s+$", "")
+ if proc then
+ proc:close()
+ end
+
+ if latestRaw == "" or latestRaw == "null" then
+ printf("FAIL [%s] Failed to fetch data from GitHub API.\n", ext.pname)
+ else
+ local prefix = ext.tagPrefix
+ local latest = latestRaw
+ if prefix ~= "" and latestRaw:sub(1, #prefix) == prefix then
+ latest = latestRaw:sub(#prefix + 1)
+ end
+
+ if latest ~= ext.version then
+ printf("UPDATE [%s] %s -> %s\n", ext.pname, ext.version, latest)
+ printf(" Repo: https://github.com/%s/%s\n", ext.owner, ext.repo)
+ print("")
+ else
+ printf("OK [%s] %s\n", ext.pname, ext.version)
+ end
+ end
+end
+
+print("----------------------------------------------")
+print("Done!")