Skip to content

Commit

Permalink
Merge pull request #265 from hmmwhatsthisdo/Remove-JiraIssue_264
Browse files Browse the repository at this point in the history
Implement removal of Jira issues via Remove-JiraIssue
  • Loading branch information
lipkau authored Jun 5, 2018
2 parents 6df414b + 167a1ed commit 538c221
Show file tree
Hide file tree
Showing 3 changed files with 614 additions and 0 deletions.
116 changes: 116 additions & 0 deletions JiraPS/Public/Remove-JiraIssue.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
function Remove-JiraIssue {
[CmdletBinding(
ConfirmImpact = 'High',
SupportsShouldProcess,
DefaultParameterSetName = "ByInputObject"
)]
param (
[Parameter(
Mandatory,
ValueFromPipeline,
Position = 0,
ParameterSetName = "ByInputObject"
)]
[Alias(
"Issue"
)]
[PSTypeName("JiraPS.Issue")]
[Object[]]
$InputObject,

# The issue's ID number or key.
[Parameter(
Mandatory,
Position = 0,
ParameterSetName = "ByIssueId"
)]
[ValidateNotNullOrEmpty()]
[Alias(
"Id",
"Key",
"issueIdOrKey"
)]
[String[]]
$IssueId,

[Switch]
[Alias("deleteSubtasks")]
$IncludeSubTasks,

[System.Management.Automation.CredentialAttribute()]
[System.Management.Automation.PSCredential]
$Credential = [System.Management.Automation.PSCredential]::Empty,

[Switch]
$Force
)

begin {
Write-Verbose "[$($MyInvocation.MyCommand.Name)] Function started"

$server = Get-JiraConfigServer -ErrorAction Stop

$resourceURi = "$server/rest/api/latest/issue/{0}?deleteSubtasks={1}"

if ($Force) {
Write-DebugMessage "[$($MyInvocation.MyCommand.Name)] -Force was passed. Backing up current ConfirmPreference [$ConfirmPreference] and setting to None"
$oldConfirmPreference = $ConfirmPreference
$ConfirmPreference = 'None'
}
}

process {

Write-DebugMessage "[$($MyInvocation.MyCommand.Name)] ParameterSetName: $($PsCmdlet.ParameterSetName)"
Write-DebugMessage "[$($MyInvocation.MyCommand.Name)] PSBoundParameters: $($PSBoundParameters | Out-String)"

switch ($PsCmdlet.ParameterSetName) {
"ByInputObject" { $PrimaryIterator = $InputObject }
"ByIssueId" { $PrimaryIterator = $IssueID }
}

foreach ($issueItem in $PrimaryIterator) {

if ($PsCmdlet.ParameterSetName -eq "ByIssueId") {
$_issue = Get-JiraIssue -Key $issueItem -Credential $Credential -ErrorAction Stop
} Else {
$_issue = $issueItem
}

Write-Verbose "[$($MyInvocation.MyCommand.Name)] Processing [$_issue]"
Write-Debug "[$($MyInvocation.MyCommand.Name)] Processing `$issueItem [$_issue]"



$parameter = @{
URI = $resourceURi -f $_issue.Key,$IncludeSubTasks
Method = "DELETE"
Credential = $Credential
Cmdlet = $PsCmdlet
}


If ($IncludeSubTasks) {
$ActionText = "Remove issue and sub-tasks"
} Else {
$ActionText = "Remove issue"
}

if ($PSCmdlet.ShouldProcess($_issue.ToString(), $ActionText)) {

Write-Debug "[$($MyInvocation.MyCommand.Name)] Invoking JiraMethod with `$parameter"
Invoke-JiraMethod @parameter
}
}

}

end {
if ($Force) {
Write-DebugMessage "[$($MyInvocation.MyCommand.Name)] Restoring ConfirmPreference to [$oldConfirmPreference]"
$ConfirmPreference = $oldConfirmPreference
}

Write-Verbose "[$($MyInvocation.MyCommand.Name)] Complete"
}
}
Loading

0 comments on commit 538c221

Please sign in to comment.