Set-GitLabProjectMergeRequest.ps1
function Set-GitLabProjectMergeRequest { <# .SYNOPSIS Modifie a Merge Request .DESCRIPTION The Set-GitLabProjectMergeRequest function modifies a given Merge Request. Can be used to merge a merge request using -StateEvent merge does not remove source branch. returns modified merge request when -PassThru is specified. .EXAMPLE Set-GitLabProjectMergeRequest -ProjectID 20 -MergeRequestID 2 -Description 'Updated Description' --------------------------------------------------------------- updates the description of MR 2 in project 20 to 'Updated Description' .EXAMPLE Set-GitLabProjectMergeRequest -ProjectID 20 -MergeRequestID 2 -StateEvent merge --------------------------------------------------------------- Merges Merge Request 2 in project 20. Does not remove source branch use Approve-GitLabProjectMergeRequest to do a complex merge #> [CmdletBinding()] [Alias()] [OutputType()] Param ( # The ID of the project [Parameter(HelpMessage = 'ProjectID', Mandatory = $true)] [Alias('ID')] [int]$ProjectID, # The ID of the Merge Request [Parameter(HelpMessage = 'MergeRequestID', Mandatory = $true)] [Alias('MRID')] [string]$MergeRequestID, # Change the Target Branch. [Parameter(HelpMessage = 'target Branch',mandatory = $false)] [Alias('target_branch')] [string]$TargetBranch, # Title for the Merge Request [Parameter(HelpMessage = 'Title of MR',mandatory = $false)] [string]$Title, # Description for the Merge Request [Parameter(HelpMessage = 'description of the MR',mandatory = $false)] [string]$Description, # Modifies state of the Merge Request [Parameter(HelpMessage = 'StateEvent (reopen|close|merge)')] [validateset('reopen','close','merge')] [alias('state_event')] [string]$StateEvent, # ID of the assignee for the Merge Request [Parameter(Helpmessage = 'Assignee user ID',mandatory = $false)] [Alias('assignee_id')] [int]$AssigneeID, # ID of the Milestone to assign the Merge Request to [Parameter(Helpmessage = 'The ID of a milestone to assign MR',mandatory = $false)] [Alias('milestone_id')] [int]$MilestoneID, # the labels to assign to the Merge Request # overwrites any labels previously assigned [Parameter(HelpMessage = 'label names for an MR',mandatory = $false)] [string[]]$Labels, # Existing GitlabConnector Object, can be retrieved with Get-GitlabConnect [Parameter(HelpMessage = 'Specify Existing GitlabConnector', Mandatory = $false, DontShow = $true)] [psobject]$GitlabConnect = (Get-GitlabConnect), # Return the modified Merge Request [Parameter(HelpMessage = 'Passthru the modified Merge Request', Mandatory = $false)] [switch]$PassThru ) $HTTPMethod = 'put' $APIUrl = "projects/$ProjectID/merge_requests/$MergeRequestID" $Parameters = @{} if($TargetBranch) { $Parameters.'target_branch' = $TargetBranch } if($AssigneeID) { $Parameters.'assignee_id' = $AssigneeID } if($Title) { $Parameters.title = $Title } if($Description) { $Parameters.description = $Description } if($StateEvent) { $Parameters.'state_event' = $StateEvent } if($Labels) { $Parameters.labels = @($Labels) -join ',' } if($MilestoneID) { $Parameters.'milestone_id' = $MilestoneID } $NewMergeRequest = $GitlabConnect.callapi($APIUrl,$HTTPMethod,$Parameters) if($PassThru) { return $NewMergeRequest } } |