Release 2.5.1 (#271)
* feat: Support for custom authentication provider functions (#270) * feat: Support for adding "draft" notes to the review, and publishing them, either individually or all at once. Addresses feature request #223. * feat: Lets users select + checkout a merge request directly within Neovim, without exiting to the terminal * fix: Checks that the remote feature branch exists and is up-to-date before creating a MR, starting a review, or opening the MR summary (#278) * docs: We require some state from Diffview, this shows how to load that state prior to installing w/ Packer. Fixes #94. This is a #MINOR release. --------- Co-authored-by: Jakub F. Bortlík <jakub.bortlik@proton.me> Co-authored-by: sunfuze <sunfuze.1989@gmail.com> Co-authored-by: Patrick Pichler <mail@patrickpichler.dev>
This commit is contained in:
committed by
GitHub
parent
f10c4ebb8f
commit
cf6ccddce3
56
lua/gitlab/actions/merge_requests.lua
Normal file
56
lua/gitlab/actions/merge_requests.lua
Normal file
@@ -0,0 +1,56 @@
|
||||
local state = require("gitlab.state")
|
||||
local reviewer = require("gitlab.reviewer")
|
||||
local git = require("gitlab.git")
|
||||
local u = require("gitlab.utils")
|
||||
local M = {}
|
||||
|
||||
---@class SwitchOpts
|
||||
---@field open_reviewer boolean
|
||||
|
||||
---Opens up a select menu that lets you choose a different merge request.
|
||||
---@param opts SwitchOpts|nil
|
||||
M.choose_merge_request = function(opts)
|
||||
local has_clean_tree, clean_tree_err = git.has_clean_tree()
|
||||
if clean_tree_err ~= nil then
|
||||
return
|
||||
elseif has_clean_tree ~= "" then
|
||||
u.notify("Your local branch has changes, please stash or commit and push", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
if opts == nil then
|
||||
opts = state.settings.choose_merge_request
|
||||
end
|
||||
|
||||
vim.ui.select(state.MERGE_REQUESTS, {
|
||||
prompt = "Choose Merge Request",
|
||||
format_item = function(mr)
|
||||
return string.format("%s (%s)", mr.title, mr.author.name)
|
||||
end,
|
||||
}, function(choice)
|
||||
if not choice then
|
||||
return
|
||||
end
|
||||
|
||||
if reviewer.is_open then
|
||||
reviewer.close()
|
||||
end
|
||||
|
||||
vim.schedule(function()
|
||||
local _, branch_switch_err = git.switch_branch(choice.source_branch)
|
||||
if branch_switch_err ~= nil then
|
||||
return
|
||||
end
|
||||
|
||||
vim.schedule(function()
|
||||
require("gitlab.server").restart(function()
|
||||
if opts.open_reviewer then
|
||||
require("gitlab").review()
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user