Build/Add-PreprocessorSymbolsToAppJson.ps1

function Add-PreprocessorSymbolsToAppJson {
    Param(
        #Path to determine the environment or app .json file location
        [Parameter(Mandatory = $false)]
        [String]
        $SourcePath = (Get-Location)
    )

    #Get preprocessorSymbols property from environment.json
    [System.Array]$EnvSymbols = Get-EnvironmentKeyValue -SourcePath $SourcePath -KeyName 'preprocessorSymbols'
    if ($null -ne $EnvSymbols) {
        #Get existing preprocessorSymbols property from app.json
        [System.Array]$AppSymbols = Get-AppKeyValue -SourcePath $SourcePath -KeyName 'preprocessorSymbols'
        
        #Get new unique symbols
        if ($null -ne $AppSymbols) {
            $NewSymbols = Compare-Object $EnvSymbols $AppSymbols | Where-Object -property SideIndicator -EQ '<='
            if ($null -ne $NewSymbols) {
                $EnvSymbols = @()
                foreach($NewSymbol in $NewSymbols){
                    $EnvSymbols +=  [System.String]$NewSymbol.InputObject
                }
            }
        }
        #Apply add new symbols to app.json
        if($EnvSymbols.Count -ne 0){
            if($null -ne $AppSymbols){
                $Symbols = $AppSymbols + $EnvSymbols
            }else {
                $Symbols = $EnvSymbols
            } 
            Set-AppKeyValue -SourcePath $SourcePath -KeyName 'preprocessorSymbols' -KeyValue $Symbols 
        }
    }
}

Export-ModuleMember -Function Add-PreprocessorSymbolsToAppJson