src/private/MiscHelpers.ps1

# Get AdditionalArguments property from the input cmdline
function Get-AdditionalArguments {
    [CmdletBinding()]
    [OutputType([string])]
    param (
    )

    $additionalArgs = $null
    $options = $request.Options

    if($options.ContainsKey($script:additionalArguments)) {
        $additionalArgs = $options[$script:additionalArguments]
    }

    $additionalArgs
}

# Find whether a user specifies -force
function Get-ForceProperty {
    [CmdletBinding()]
    [OutputType([bool])]
    param (
    )

    $force = $false
    $options = $request.Options

    if ($options.ContainsKey('Force')) {
        $force = (-not [System.String]::IsNullOrWhiteSpace($options['Force']))
    }

    $force
}

# Utility to throw an errorrecord
function ThrowError {
    param (
        # We need to grab and use the 'parent' (parent = 1) scope to properly return output to the user
        [parameter()]
        [System.Management.Automation.PSCmdlet]
        $CallerPSCmdlet = ((Get-Variable -Scope 1 'PSCmdlet').Value),

        [parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [System.String]
        $ExceptionName,

        [parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [System.String]
        $ExceptionMessage,

        [System.Object]
        $ExceptionObject,

        [parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [System.String]
        $ErrorId,

        [parameter(Mandatory = $true)]
        [ValidateNotNull()]
        [System.Management.Automation.ErrorCategory]
        $ErrorCategory
    )

    $errorRecord = New-Object System.Management.Automation.ErrorRecord (New-Object $ExceptionName $ExceptionMessage), $ErrorId, $ErrorCategory, $ExceptionObject
    $CallerPSCmdlet.ThrowTerminatingError($errorRecord)
}