feat(ui): show new version that is available instead of general message

This commit is contained in:
Folke Lemaitre 2022-12-31 16:01:59 +01:00
parent a9de5910f2
commit 34e2c78e06
No known key found for this signature in database
GPG Key ID: 41F8B1FBACAE2040
6 changed files with 20 additions and 11 deletions

View File

@ -19,11 +19,11 @@ function M.fast_check(opts)
opts = opts or {}
for _, plugin in pairs(Config.plugins) do
if not plugin.pin and plugin._.installed then
plugin._.has_updates = nil
plugin._.updates = nil
local info = Git.info(plugin.dir)
local ok, target = pcall(Git.get_target, plugin)
if ok and info and target and info.commit ~= target.commit then
plugin._.has_updates = true
plugin._.updates = { from = info, to = target }
end
end
end
@ -45,7 +45,7 @@ function M.report(notify)
local lines = {}
M.updated = {}
for _, plugin in pairs(Config.plugins) do
if plugin._.has_updates then
if plugin._.updates then
table.insert(M.updated, plugin.name)
if not vim.tbl_contains(M.reported, plugin.name) then
table.insert(lines, "- **" .. plugin.name .. "**")

View File

@ -183,7 +183,7 @@ end
---@param plugins? LazyPlugin[]
function M.clear(plugins)
for _, plugin in pairs(plugins or Config.plugins) do
plugin._.has_updates = nil
plugin._.updates = nil
plugin._.updated = nil
plugin._.cloned = nil
plugin._.dirty = nil

View File

@ -35,7 +35,9 @@ 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
if target.commit ~= info.commit then
self.plugin._.updates = { from = info, to = target }
end
table.insert(args, info.commit .. ".." .. target.commit)
else
vim.list_extend(args, opts.args or Config.options.git.log)

View File

@ -8,7 +8,7 @@
---@field dirty? boolean
---@field updated? {from:string, to:string}
---@field is_local boolean
---@field has_updates? boolean
---@field updates? {from:GitInfo, to:GitInfo}
---@field cloned? boolean
---@field kind? LazyPluginKind
---@field dep? boolean True if this plugin is only in the spec as a dependency

View File

@ -345,10 +345,17 @@ function M:diagnostics(plugin)
message = "updated from " .. plugin._.updated.from:sub(1, 7) .. " to " .. plugin._.updated.to:sub(1, 7),
})
end
elseif plugin._.has_updates then
self:diagnostic({
message = "updates available",
})
elseif plugin._.updates then
local version = plugin._.updates.to.version
if version then
self:diagnostic({
message = "version " .. tostring(version) .. " is available",
})
else
self:diagnostic({
message = "updates available",
})
end
end
for _, task in ipairs(plugin._.tasks or {}) do
if task:is_running() then

View File

@ -63,7 +63,7 @@ return {
{
---@param plugin LazyPlugin
filter = function(plugin)
return plugin._.has_updates
return plugin._.updates
end,
title = "Updates",
},