This plugin previously only supported the Delta reviewer. Thanks to work from @mrparalon it now supports Diffview also. This MR adjusts the requirements to account for this, and the README. It also addresses a small bug in the original implementation regarding an async file opening action, and applies formatting to the diffview file consistent with the rest of the project
66 lines
1.8 KiB
Lua
66 lines
1.8 KiB
Lua
-- This module contains the logic responsible for building and starting
|
|
-- the Golang server. The Go server is responsible for making API calls
|
|
-- to Gitlab and returning the data
|
|
local state = require("gitlab.state")
|
|
local u = require("gitlab.utils")
|
|
local M = {}
|
|
|
|
-- Starts the Go server and call the callback provided
|
|
M.start = function(callback)
|
|
local command = state.settings.bin
|
|
.. " "
|
|
.. state.settings.project_id
|
|
.. " "
|
|
.. state.settings.gitlab_url
|
|
.. " "
|
|
.. state.settings.port
|
|
.. " "
|
|
.. state.settings.auth_token
|
|
.. " "
|
|
.. state.settings.log_path
|
|
|
|
vim.fn.jobstart(command, {
|
|
on_stdout = function(job_id)
|
|
if job_id <= 0 then
|
|
vim.notify("Could not start gitlab.nvim binary", vim.log.levels.ERROR)
|
|
else
|
|
callback()
|
|
end
|
|
end,
|
|
on_stderr = function(_, errors)
|
|
local err_msg = ''
|
|
for _, err in ipairs(errors) do
|
|
if err ~= "" and err ~= nil then
|
|
err_msg = err_msg .. err .. "\n"
|
|
end
|
|
end
|
|
|
|
if err_msg ~= '' then vim.notify(err_msg, vim.log.levels.ERROR) end
|
|
end
|
|
})
|
|
end
|
|
|
|
|
|
-- Builds the Go binary
|
|
M.build = function(override)
|
|
local file_path = u.current_file_path()
|
|
local parent_dir = vim.fn.fnamemodify(file_path, ":h:h:h:h")
|
|
state.settings.bin_path = parent_dir
|
|
state.settings.bin = parent_dir .. "/bin"
|
|
|
|
if not override then
|
|
local binary_exists = vim.loop.fs_stat(state.settings.bin)
|
|
if binary_exists ~= nil then return end
|
|
end
|
|
|
|
local command = string.format("cd %s && make", state.settings.bin_path)
|
|
local installCode = os.execute(command .. "> /dev/null")
|
|
if installCode ~= 0 then
|
|
vim.notify("Could not install gitlab.nvim!", vim.log.levels.ERROR)
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
return M
|