lazy.nvim/lua/lazy/manage/checker.lua

63 lines
1.5 KiB
Lua
Raw Normal View History

2022-12-05 19:49:23 +00:00
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 = {}
M.reported = {}
2022-12-05 19:49:23 +00:00
function M.start()
M.fast_check()
M.check()
end
---@param opts? {report:boolean} report defaults to true
function M.fast_check(opts)
opts = opts or {}
2022-12-05 19:49:23 +00:00
for _, plugin in pairs(Config.plugins) do
if not plugin.pin and plugin._.installed then
plugin._.updates = nil
local info = Git.info(plugin.dir)
local ok, target = pcall(Git.get_target, plugin)
if ok and info and target and not Git.eq(info, target) then
plugin._.updates = { from = info, to = target }
end
2022-12-05 19:49:23 +00:00
end
end
M.report(opts.report ~= false)
2022-12-05 19:49:23 +00:00
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
---@param notify? boolean
function M.report(notify)
2022-12-05 19:49:23 +00:00
local lines = {}
M.updated = {}
2022-12-05 19:49:23 +00:00
for _, plugin in pairs(Config.plugins) do
if plugin._.updates then
2022-12-05 19:49:23 +00:00
table.insert(M.updated, plugin.name)
if not vim.tbl_contains(M.reported, plugin.name) then
table.insert(lines, "- **" .. plugin.name .. "**")
table.insert(M.reported, plugin.name)
end
2022-12-05 19:49:23 +00:00
end
end
if #lines > 0 and notify and Config.options.checker.notify then
2022-12-05 19:49:23 +00:00
table.insert(lines, 1, "# Plugin Updates")
Util.info(lines)
end
end
return M