AL/Add-TestAppsToAppJson.ps1
function Add-TestAppsToAppJson{ Param( #Path to determine the environment or app .json file location [Parameter(Mandatory=$false)] [String] $SourcePath = (Get-Location) ) #Get test apps property from settings.json $EnvironmentJson = ConvertFrom-Json (Get-Content (Join-Path $SourcePath 'settings.json') -Raw) $TestappsJsonContent = $EnvironmentJson.PSObject.Properties.Item('testapps').Value if ($TestappsJsonContent.Length -gt 0){ #app has no current dependencies, add the test test dependencies directly $AppJsonContent = Get-Content (Join-Path $SourcePath 'app.json') -Raw $AppJson = ConvertFrom-Json $AppJsonContent $Dependencies = Get-AppKeyValue -SourcePath $SourcePath -KeyName 'dependencies' if ($Dependencies -eq ''){ $AppJson | Add-Member -Name 'dependencies' -value $TestappsJsonContent -MemberType NoteProperty } else{ #Check the test app dependency isnt already in the app.json $AppJson.PSObject.Properties.Remove('dependencies') if ($null -eq $Dependencies ){ $AppJson | Add-Member -Name 'dependencies' -value $TestappsJsonContent -MemberType NoteProperty } else{ [System.Array]$Dependencies = $Dependencies foreach ($TestDependency in $TestappsJsonContent){ $SkipDependency = $false foreach ($Dependency in $Dependencies){ if (!$SkipDependency){ if ($Dependency.appId -eq $TestDependency.appId){ $SkipDependency = $true } } } if (!$SkipDependency){ $Dependencies += $TestDependency } } $AppJson | Add-Member -Name 'dependencies' -value $Dependencies -MemberType NoteProperty } } Set-Content -Path (Join-Path $SourcePath 'app.json') -Value (ConvertTo-Json $AppJson) } } Export-ModuleMember -Function Add-TestAppsToAppJson |