functions/Add-ArmVariable.ps1


<#
    .SYNOPSIS
        Add new variable to the ARM template
         
    .DESCRIPTION
        Adds or overwrites an ARM template variable by the name provided, and allows you to specify the value
         
        Notes: It is considered as an internal function, and should not be used directly.
         
    .PARAMETER InputObject
        The ARM object that you want to work against
         
        It has to be a object of the type [ArmTemplate] for it to work properly
         
    .PARAMETER Name
        Name of the variable that you want to work against
         
        If the variable exists, the value gets overrided otherwise a new variable is added to the list of variables
         
    .PARAMETER Value
        The value, that you want to assign to the ARM template variable
         
    .EXAMPLE
        PS C:\> Add-ArmVariable -InputObject $armObj -Name "logicAppName" -Value "TestLogicApp"
         
        Creates / updates the logicAppName ARM template variable
        Sets the value to: TestLogicApp
         
    .NOTES
         
        Author: Mötz Jensen (@Splaxi)
         
        This is considered as an internal function, and should not be used directly.
#>

function Add-ArmVariable {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [object] $InputObject,

        [Alias('VariableName')]
        [Parameter(Mandatory = $true)]
        [string] $Name,

        [Parameter(Mandatory = $true)]
        [object] $Value
    )

    if ($InputObject.variables.$Name) {
        $InputObject.variables.$Name = $($Value)
    }
    else {
        $InputObject.variables | Add-Member -MemberType NoteProperty -Name $Name -Value $($Value)
    }

    $InputObject
}