Add Filtering, HealthCheck, Better Tests (#350)
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.
This commit is contained in:
committed by
GitHub
parent
aa5d3c1f52
commit
4ae623cd65
146
lua/gitlab/health.lua
Normal file
146
lua/gitlab/health.lua
Normal file
@@ -0,0 +1,146 @@
|
||||
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
|
||||
Reference in New Issue
Block a user