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

<# .SYNOPSIS Parses AVM module CSV file .DESCRIPTION Depending on the parameter, the correct CSV file will be parsed and returned a an object .PARAMETER ModuleIndex Mandatory. Type of CSV file, that should be parsed ('Bicep-Resource', 'Bicep-Pattern', 'Bicep-Utility') .EXAMPLE Get-AvmCsvData -ModuleIndex 'Bicep-Resource' Parse the AVM Bicep modules #> Function Get-AvmCsvData { [CmdletBinding()] param ( [Parameter(Mandatory)] [ValidateSet('Bicep-Resource', 'Bicep-Pattern', 'Bicep-Utility')] [string] $ModuleIndex ) # CSV file URLs $BicepResourceUrl = 'https://aka.ms/avm/index/bicep/res/csv' $BicepPatternUrl = 'https://aka.ms/avm/index/bicep/ptn/csv' $BicepUtilityUrl = 'https://aka.ms/avm/index/bicep/utl/csv' # Retrieve the CSV file switch ($ModuleIndex) { 'Bicep-Resource' { try { $unfilteredCSV = Invoke-WebRequest -Uri $BicepResourceUrl } catch { throw 'Unable to retrieve CSV file - Check network connection.' } } 'Bicep-Pattern' { try { $unfilteredCSV = Invoke-WebRequest -Uri $BicepPatternUrl } catch { throw 'Unable to retrieve CSV file - Check network connection.' } } 'Bicep-Utility' { try { $unfilteredCSV = Invoke-WebRequest -Uri $BicepUtilityUrl } catch { throw 'Unable to retrieve CSV file - Check network connection.' } } } # Convert the CSV content to a PowerShell object $formattedBicepFullCsv = ConvertFrom-Csv $unfilteredCSV.Content # Loop through each item in the filtered data foreach ($item in $formattedBicepFullCsv) { # 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 modified data return $formattedBicepFullCsv }