feat: add filtering when choosing merge requests (#346) feat: Add healthcheck (#345) refactor: Move to gomock (#349) feat: Makes the remote of the plugin configurable (#348) This is a #MINOR release.
147 lines
3.7 KiB
Lua
147 lines
3.7 KiB
Lua
local state = require("gitlab.state")
|
|
local List = require("gitlab.utils.list")
|
|
local u = require("gitlab.utils")
|
|
local M = {}
|
|
|
|
local function check_go_version()
|
|
local go_version = io.popen("go version"):read("*a")
|
|
if go_version then
|
|
local major, minor, _ = go_version:match("(%d+)%.(%d+)%.(%d+)")
|
|
if major and tonumber(major) >= 1 and tonumber(minor) >= 19 then
|
|
return
|
|
else
|
|
return "Go is installed, but version is older than 1.19."
|
|
end
|
|
else
|
|
return "Go is not installed."
|
|
end
|
|
end
|
|
|
|
---Checks the health of the plugin
|
|
---@param return_results boolean
|
|
M.check = function(return_results)
|
|
local warnings = List.new({})
|
|
local errors = List.new({})
|
|
|
|
if not return_results then
|
|
vim.health.start("gitlab.nvim")
|
|
end
|
|
|
|
if state.settings.reviewer == "delta" then
|
|
table.insert(
|
|
warnings,
|
|
"Delta is no longer a supported reviewer, please use diffview and update your setup function"
|
|
)
|
|
end
|
|
|
|
local required_deps = {
|
|
{
|
|
name = "MunifTanjim/nui.nvim",
|
|
package = "nui.popup",
|
|
},
|
|
{
|
|
name = "nvim-lua/plenary.nvim",
|
|
package = "plenary",
|
|
},
|
|
{
|
|
name = "sindrets/diffview.nvim",
|
|
package = "diffview",
|
|
},
|
|
}
|
|
|
|
local recommended_deps = {
|
|
{
|
|
name = "stevearc/dressing.nvim",
|
|
package = "dressing",
|
|
},
|
|
{
|
|
name = "nvim-tree/nvim-web-devicons",
|
|
package = "nvim-web-devicons",
|
|
},
|
|
}
|
|
|
|
local go_version_problem = check_go_version()
|
|
if go_version_problem ~= nil then
|
|
table.insert(warnings, go_version_problem)
|
|
end
|
|
|
|
for _, dep in ipairs(required_deps) do
|
|
local ok, _ = pcall(require, dep.package)
|
|
if not ok then
|
|
table.insert(errors, string.format("%s is a required dependency, but cannot be found", dep.name))
|
|
end
|
|
end
|
|
|
|
for _, dep in ipairs(recommended_deps) do
|
|
local ok, _ = pcall(require, dep.package)
|
|
if not ok then
|
|
table.insert(warnings, string.format("%s is a recommended dependency", dep.name))
|
|
end
|
|
end
|
|
|
|
local removed_fields_in_user_config = {}
|
|
local removed_settings_fields = {
|
|
"dialogue",
|
|
"discussion_tree.add_emoji",
|
|
"discussion_tree.copy_node_url",
|
|
"discussion_tree.delete_comment",
|
|
"discussion_tree.delete_emoji",
|
|
"discussion_tree.edit_comment",
|
|
"discussion_tree.jump_to_file",
|
|
"discussion_tree.jump_to_reviewer",
|
|
"discussion_tree.open_in_browser",
|
|
"discussion_tree.publish_draft",
|
|
"discussion_tree.refresh_data",
|
|
"discussion_tree.reply",
|
|
"discussion_tree.switch_view",
|
|
"discussion_tree.toggle_all_discussions",
|
|
"discussion_tree.toggle_draft_mode",
|
|
"discussion_tree.toggle_node",
|
|
"discussion_tree.toggle_resolved",
|
|
"discussion_tree.toggle_resolved_discussions",
|
|
"discussion_tree.toggle_tree_type",
|
|
"discussion_tree.toggle_unresolved_discussions",
|
|
"help",
|
|
"popup.keymaps.next_field",
|
|
"popup.keymaps.prev_field",
|
|
"popup.perform_action",
|
|
"popup.perform_linewise_action",
|
|
"review_pane", -- Only relevant for the Delta reviewer
|
|
}
|
|
|
|
for _, field in ipairs(removed_settings_fields) do
|
|
if u.get_nested_field(state.settings, field) ~= nil then
|
|
table.insert(removed_fields_in_user_config, field)
|
|
end
|
|
end
|
|
|
|
if #removed_fields_in_user_config ~= 0 then
|
|
table.insert(
|
|
warnings,
|
|
"The following settings fields have been removed:\n" .. table.concat(removed_fields_in_user_config, "\n")
|
|
)
|
|
end
|
|
|
|
if #errors > 0 then
|
|
for _, err in ipairs(errors) do
|
|
vim.health.error(err)
|
|
end
|
|
end
|
|
|
|
if #warnings > 0 then
|
|
for _, err in ipairs(warnings) do
|
|
vim.health.warn(err)
|
|
end
|
|
end
|
|
|
|
if #warnings + #errors == 0 then
|
|
vim.health.ok("Gitlab plugin is okay!")
|
|
end
|
|
|
|
if return_results then
|
|
return #warnings + #errors == 0
|
|
end
|
|
end
|
|
|
|
return M
|