This repository was archived by the owner on Sep 29, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSet-GitLabProjectIssue.ps1
More file actions
140 lines (119 loc) · 3.68 KB
/
Copy pathSet-GitLabProjectIssue.ps1
File metadata and controls
140 lines (119 loc) · 3.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
function Set-GitLabProjectIssue
{
<#
.SYNOPSIS
Sets the properties on an issue you specify.
.DESCRIPTION
The Set-GitLabProjecctIssue function sets the properties you specify on a issue.
Returns the modified issue when -PassThru is specified.
.EXAMPLE
Set-GitLabProjectIssue -ProjectID 20 -IssueID 1 -Title 'Renamed IssueID'
---------------------------------------------------------------
Renames issue 1 on project 20 to 'Renamed IssueID'
.EXAMPLE
Set-GitLabProjectIssue -ProjectID 20 -IssueID 1 -StateEvent close
---------------------------------------------------------------
Closes issue 1 on project 20
.EXAMPLE
Set-GitLabProjectIssue -ProjectID 20 -IssueID 1 -StateEvent reopen
---------------------------------------------------------------
Reopens issue 1 on project 20
#>
[CmdletBinding()]
[Alias()]
[OutputType()]
Param
(
# The Project ID
[Parameter(HelpMessage = 'ProjectID',
Mandatory = $true)]
[Alias('ID')]
[int]$ProjectID,
# The ID of the issue
[Parameter(HelpMessage = 'IssueID',
Mandatory = $true)]
[alias('issue_id')]
[int]$IssueID,
# The title for the issue
[Parameter(Helpmessage = 'The title of an issue')]
[string]$Title,
# The description for the issue
[Parameter(Helpmessage = 'The description of the issue',mandatory = $false)]
[string]$Description,
# The assignee ID for the issue
[Parameter(Helpmessage = 'The ID of a user to assign issue',mandatory = $false)]
[Alias('assignee_id')]
[int]$AssigneeID,
# The milestone ID to assign the issue to
[Parameter(Helpmessage = 'The ID of a milestone to assign issue',mandatory = $false)]
[Alias('milestone_id')]
[int]$MilestoneID,
# the labels to assign to the issue
# overwrites any labels previously assigned
[Parameter(HelpMessage = 'label names for an issue',mandatory = $false)]
[string[]]$Labels,
# Reopens or closes the Issue
[Parameter(HelpMessage = 'StateEvent (opened|closed)')]
[validateset('reopen','close')]
[alias('state_event')]
[string]$StateEvent,
# Modify the creationdate the issue was created.
[Parameter(Helpmessage = 'the date the issue was created',mandatory = $false)]
[alias('updated_at')]
[datetime]$UpdatedAt,
# The Due Date for the issue
[Parameter(Helpmessage = 'the due date of the issue',mandatory = $false)]
[alias('due_date')]
[datetime]$DueDate,
# 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 issue
[Parameter(HelpMessage = 'Passthru the modified issue',
Mandatory = $false)]
[switch]$PassThru
)
$httpmethod = 'put'
$apiurl = "projects/$ProjectID/issues/$IssueID"
$parameters = @{
}
if($Title)
{
$parameters.title = $Title
}
if($Description)
{
$parameters.description = $Description
}
if($AssigneeID)
{
$parameters.'assignee_id' = $AssigneeID
}
if ($MilestoneID)
{
$parameters.'milestone_id' = $MilestoneID
}
if($Labels)
{
$parameters.labels = @($Labels) -join ','
}
if($StateEvent)
{
$parameters.'state_event' = $StateEvent
}
if($UpdatedAt)
{
$parameters.'updated_at' = $UpdatedAt.ToUniversalTime().tostring('s') +'Z'
}
if($DueDate)
{
$parameters.'due_date' = $DueDate.tostring("yyyy'-'MM'-'dd")
}
$modissue = $GitlabConnect.callapi($apiurl,$httpmethod,$parameters)
if($PassThru)
{
return $modissue
}
}