feat: added `opts.git.cooldown` to allow updating plugins on slow connections. Fixes #1656

This commit is contained in:
Folke Lemaitre 2024-07-23 13:31:20 +02:00
parent 839f9e78e7
commit d5686efbd0
No known key found for this signature in database
GPG Key ID: 41F8B1FBACAE2040
3 changed files with 20 additions and 1 deletions

View File

@ -41,6 +41,10 @@ M.defaults = {
rate = 2, rate = 2,
duration = 5 * 1000, -- in ms duration = 5 * 1000, -- in ms
}, },
-- Time in seconds to wait before running fetch again for a plugin.
-- Repeated update/check operations will not run again until this
-- cooldown period has passed.
cooldown = 0,
}, },
pkg = { pkg = {
enabled = true, enabled = true,

View File

@ -40,6 +40,15 @@ function throttle.wait()
end end
end end
---@param plugin LazyPlugin
local function cooldown(plugin)
if not plugin._.last_check then
return false
end
local delta = (vim.uv.now() - plugin._.last_check) / 1000
return delta < Config.options.git.cooldown
end
---@type table<string, LazyTaskDef> ---@type table<string, LazyTaskDef>
local M = {} local M = {}
@ -266,7 +275,7 @@ M.status = {
-- fetches all needed origin branches -- fetches all needed origin branches
M.fetch = { M.fetch = {
skip = function(plugin) skip = function(plugin)
return not plugin._.installed or plugin._.is_local return not plugin._.installed or plugin._.is_local or cooldown(plugin)
end, end,
---@async ---@async
@ -287,6 +296,11 @@ M.fetch = {
self:spawn("git", { self:spawn("git", {
args = args, args = args,
cwd = self.plugin.dir, cwd = self.plugin.dir,
on_exit = function(ok)
if ok then
self.plugin._.last_check = vim.uv.now()
end
end,
}) })
end, end,
} }

View File

@ -20,6 +20,7 @@
---@field tasks? LazyTask[] ---@field tasks? LazyTask[]
---@field updated? {from:string, to:string} ---@field updated? {from:string, to:string}
---@field updates? {from:GitInfo, to:GitInfo} ---@field updates? {from:GitInfo, to:GitInfo}
---@field last_check? number
---@field working? boolean ---@field working? boolean
---@field pkg? LazyPkg ---@field pkg? LazyPkg