utilities/pipelines/sharedScripts/teamLinter/Get-AvmCsvData.ps1 (58 lines of code) (raw):

Function Get-AvmCsvData { [CmdletBinding()] param ( [Parameter(Mandatory)] [ValidateSet('Bicep-Resource','Bicep-Pattern', 'Terraform-Resource','Terraform-Pattern')] [string]$ModuleIndex ) # Retrieve the CSV file if ($ModuleIndex -eq 'Bicep-Resource') { try { $unfilteredCSV = Invoke-WebRequest -Uri "https://aka.ms/avm/index/bicep/res/csv" } catch { Write-Error "Unable to retrieve CSV file - Check network connection." } } elseif ($ModuleIndex -eq 'Bicep-Pattern') { try { $unfilteredCSV = Invoke-WebRequest -Uri "https://aka.ms/avm/index/bicep/ptn/csv" } catch { Write-Error "Unable to retrieve CSV file - Check network connection." } } elseif ($ModuleIndex -eq 'Terraform-Resource') { try { $unfilteredCSV = Invoke-WebRequest -Uri "https://aka.ms/avm/index/tf/res/csv" } catch { Write-Error "Unable to retrieve CSV file - Check network connection." } } elseif ($ModuleIndex -eq 'Terraform-Pattern') { try { $unfilteredCSV = Invoke-WebRequest -Uri "https://aka.ms/avm/index/tf/ptn/csv" } catch { Write-Error "Unable to retrieve CSV file - Check network connection." } } else { Write-Error "Invalid ModuleIndex value" exit 1 } # Convert the CSV content to a PowerShell object $formattedBicepFullCsv = ConvertFrom-CSV $unfilteredCSV.Content # Filter the CSV data where the ModuleStatus is 'Available :green_circle:' $filterCsvAvailableBicepModule = $formattedBicepFullCsv | Where-Object {$_.ModuleStatus -eq 'Available :green_circle:'} # Loop through each item in the filtered data foreach ($item in $filterCsvAvailableBicepModule) { # Remove '@Azure/' from the ModuleOwnersGHTeam property $item.ModuleOwnersGHTeam = $item.ModuleOwnersGHTeam -replace '@Azure/', '' # Remove '@Azure/' from the ModuleContributorsGHTeam property $item.ModuleContributorsGHTeam = $item.ModuleContributorsGHTeam -replace '@Azure/', '' } # Return the filtered and modified data return $filterCsvAvailableBicepModule }