Functions/packages-service/Remove-vROPackage.psm1

function Remove-vROPackage {
<#
    .SYNOPSIS
    Remove a vRO Package
    
    .DESCRIPTION
    Remove a vRO Package
    
    .PARAMETER Name
    Package Name

    .PARAMETER DeletePackageWithContent
    Deletes the package along with the content. If other packages share elements with this package, they will be deleted

    .PARAMETER DeletePackageKeepingShared
    Deletes the package along with the content. If other packages share elements with this package, the elements will not be removed.

    .INPUTS
    System.String.
    Switch

    .OUTPUTS
    None

    .EXAMPLE
    Remove-vROPackage -Name "net.powervro.tests"

    .EXAMPLE
    Get-vROPackage -Name "net.powervro.tests" | Remove-vROPackage -Confirm:$false
#>

[CmdletBinding(DefaultParametersetName="DeletePackage",SupportsShouldProcess,ConfirmImpact="High")]

    Param (

    [parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelinebyPropertyName=$true)]
    [ValidateNotNullOrEmpty()]
    [String[]]$Name,

    [parameter(Mandatory=$false,ParametersetName="DeletePackageWithContent")]
    [Switch]$DeletePackageWithContent,

    [parameter(Mandatory=$false,ParametersetName="DeletePackageKeepingShared")]
    [Switch]$DeletePackageKeepingShared
    )    

    begin {
    
    }
    
    process {    

        foreach ($PackageName in $Name){

            try {    
                
                switch ($PsCmdlet.ParameterSetName){ 

                    “DeletePackage”  {

                        $URI = "/vco/api/packages/$($PackageName)/";
                        break
                    }

                    “DeletePackageWithContent”  {

                        $URI = "/vco/api/packages/$($PackageName)/?option=deletePackageWithContent";
                        break
                    }
                    “DeletePackage”  {

                        $URI = "/vco/api/packages/$($PackageName)/?option=deletePackageKeepingShared";
                        break
                    } 

                } 

                if ($PSCmdlet.ShouldProcess($PackageName)){

                    # --- Run vRO REST Request
                    Invoke-vRORestMethod -Uri $URI -Method DELETE -Verbose:$VerbosePreference
                }
            }
            catch [Exception]{

                throw
            }
        }
    }
    end {
        
    }
}