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

View File

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

View File

@ -35,7 +35,9 @@ M.log = {
local info = assert(Git.info(self.plugin.dir)) local info = assert(Git.info(self.plugin.dir))
local target = assert(Git.get_target(self.plugin)) local target = assert(Git.get_target(self.plugin))
assert(target.commit, self.plugin.name .. " " .. target.branch) 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) table.insert(args, info.commit .. ".." .. target.commit)
else else
vim.list_extend(args, opts.args or Config.options.git.log) vim.list_extend(args, opts.args or Config.options.git.log)

View File

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

View File

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

View File

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