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:
Harrison (Harry) Cramer
2024-08-23 14:01:59 -04:00
committed by GitHub
parent aa5d3c1f52
commit 4ae623cd65
61 changed files with 2174 additions and 1082 deletions

146
lua/gitlab/health.lua Normal file
View 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