feat(ui): added update checker

This commit is contained in:
Folke Lemaitre 2022-12-05 20:49:23 +01:00
parent 71e4b92fd6
commit 65cd28e613
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040
5 changed files with 64 additions and 1 deletions

View file

@ -0,0 +1,51 @@
local Config = require("lazy.core.config")
local Manage = require("lazy.manage")
local Util = require("lazy.util")
local Git = require("lazy.manage.git")
local M = {}
M.running = false
M.updated = {}
function M.start()
M.fast_check()
M.check()
end
function M.fast_check()
for _, plugin in pairs(Config.plugins) do
local info = Git.info(plugin.dir)
local target = Git.get_target(plugin)
if info and target and info.commit ~= target.commit then
plugin._.has_updates = true
end
end
M.report()
end
function M.check()
Manage.check({
show = false,
concurrency = Config.options.checker.concurrency,
}):wait(function()
M.report()
vim.defer_fn(M.check, Config.options.checker.frequency * 1000)
end)
end
function M.report()
local lines = {}
for _, plugin in pairs(Config.plugins) do
if plugin._.has_updates and not vim.tbl_contains(M.updated, plugin.name) then
table.insert(lines, "- **" .. plugin.name .. "**")
table.insert(M.updated, plugin.name)
end
end
if #lines > 0 and Config.options.checker.notify then
table.insert(lines, 1, "# Plugin Updates")
Util.info(lines)
end
end
return M

View file

@ -31,6 +31,7 @@ M.log = {
local info = assert(Git.info(self.plugin.dir))
local target = assert(Git.get_target(self.plugin))
assert(target.commit, self.plugin.name .. " " .. target.branch)
self.plugin._.has_updates = target.commit ~= info.commit
table.insert(args, info.commit .. ".." .. target.commit)
else
vim.list_extend(args, opts.args or Config.options.git.log)