Broke require("gitlab").start_server() command into separate function

This will make debugging easier!
This commit is contained in:
Harrison Cramer
2023-08-17 17:13:35 -04:00
parent 14bb2800e5
commit 8c9d46ceb5
2 changed files with 71 additions and 59 deletions

View File

@@ -199,7 +199,14 @@ vim.keymap.set("n", "<leader>glrd", gitlab.delete_reviewer)
## Troubleshooting ## Troubleshooting
This plugin uses a Golang server to reach out to Gitlab. The Golang server runs outside of Neovim, and can be interacted with directly in order to troubleshoot. The server will start up when you open Neovim with a MR branch. You can curl it directly: This plugin uses a Golang server to reach out to Gitlab. It's possible that something is going wrong when starting that server or connecting with Gitlab. The Golang server runs outside of Neovim, and can be interacted with directly in order to troubleshoot. To start the server, check out your feature branch and run these commands:
```
:lua require("gitlab").build()
:lua require("gitlab").start_server()
```
You can directly interact with the Go server like any other process:
``` ```
curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" localhost:21036/info curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" localhost:21036/info

View File

@@ -30,10 +30,6 @@ end
-- API calls if the state isn't initialized, which will set state containing -- API calls if the state isn't initialized, which will set state containing
-- information that's necessary for other API calls, like description, -- information that's necessary for other API calls, like description,
-- author, reviewer, etc. -- author, reviewer, etc.
-- This plugin will start the Go server and will call the "info"
-- endpoint and set the state of the MR.
M.go_server_running = false
M.ensureState = function(callback) M.ensureState = function(callback)
return function() return function()
if not M.args then if not M.args then
@@ -46,6 +42,21 @@ M.ensureState = function(callback)
return return
end end
-- Once the Go binary has go_server_running, call the info endpoint to set global state
M.start_server(function()
keymaps.set_keymap_keys(M.args.keymaps)
M.go_server_running = true
job.run_job("info", "GET", nil, function(data)
state.INFO = data.info
callback()
end)
end)
end
end
-- This will start the Go server and call the callback provided
M.go_server_running = false
M.start_server = function(callback)
local command = state.BIN local command = state.BIN
.. " " .. " "
.. state.PROJECT_ID .. state.PROJECT_ID
@@ -63,14 +74,8 @@ M.ensureState = function(callback)
if job_id <= 0 then if job_id <= 0 then
vim.notify("Could not start gitlab.nvim binary", vim.log.levels.ERROR) vim.notify("Could not start gitlab.nvim binary", vim.log.levels.ERROR)
return return
else elseif callback ~= nil then
-- Once the Go binary has go_server_running, call the info endpoint to set global state
keymaps.set_keymap_keys(M.args.keymaps)
M.go_server_running = true
job.run_job("info", "GET", nil, function(data)
state.INFO = data.info
callback() callback()
end)
end end
end, end,
on_stderr = function(_, errors) on_stderr = function(_, errors)
@@ -83,9 +88,9 @@ M.ensureState = function(callback)
vim.notify(err_msg, vim.log.levels.ERROR) vim.notify(err_msg, vim.log.levels.ERROR)
end end
}) })
end
end end
M.ensureProjectMembers = function(callback) M.ensureProjectMembers = function(callback)
return function() return function()
if type(state.PROJECT_MEMBERS) ~= "table" then if type(state.PROJECT_MEMBERS) ~= "table" then
@@ -180,10 +185,10 @@ M.edit_comment = M.ensureState(comment.edit_comment)
M.delete_comment = M.ensureState(comment.delete_comment) M.delete_comment = M.ensureState(comment.delete_comment)
M.toggle_resolved = M.ensureState(comment.toggle_resolved) M.toggle_resolved = M.ensureState(comment.toggle_resolved)
M.reply = M.ensureState(discussions.reply) M.reply = M.ensureState(discussions.reply)
M.add_reviewer = M.ensureProjectMembers(M.ensureState(assignees_and_reviewers.add_reviewer)) M.add_reviewer = M.ensureState(M.ensureProjectMembers(assignees_and_reviewers.add_reviewer))
M.delete_reviewer = M.ensureProjectMembers(M.ensureState(assignees_and_reviewers.delete_reviewer)) M.delete_reviewer = M.ensureState(M.ensureProjectMembers(assignees_and_reviewers.delete_reviewer))
M.add_assignee = M.ensureProjectMembers(M.ensureState(assignees_and_reviewers.add_assignee)) M.add_assignee = M.ensureState(M.ensureProjectMembers(assignees_and_reviewers.add_assignee))
M.delete_assignee = M.ensureProjectMembers(M.ensureState(assignees_and_reviewers.delete_assignee)) M.delete_assignee = M.ensureState(M.ensureProjectMembers(assignees_and_reviewers.delete_assignee))
M.state = state M.state = state
return M return M