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,
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 = {
enabled = true,

View File

@ -40,6 +40,15 @@ function throttle.wait()
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>
local M = {}
@ -266,7 +275,7 @@ M.status = {
-- fetches all needed origin branches
M.fetch = {
skip = function(plugin)
return not plugin._.installed or plugin._.is_local
return not plugin._.installed or plugin._.is_local or cooldown(plugin)
end,
---@async
@ -287,6 +296,11 @@ M.fetch = {
self:spawn("git", {
args = args,
cwd = self.plugin.dir,
on_exit = function(ok)
if ok then
self.plugin._.last_check = vim.uv.now()
end
end,
})
end,
}

View File

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