functions/Register-Extensions.ps1
function Register-Extensions { [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [array] $ExtensionsConfig, [Parameter(Mandatory=$true)] [string] $DefaultRepository ) for ($i=0; $i -lt $ExtensionsConfig.Length; $i++) { # Parse the extension configuration item into its canonical form $extension = New-ExtensionMetadataItem -Value $ExtensionsConfig[$i] # Prepare the parameters needed for extension registration $splat = $extension.Clone() $splat.Remove("Process") | Out-Null $splat.Add("Repository", $extension.ContainsKey("Repository") ? $extension.Repository : $DefaultRepository) # Decide how the extension is being provided if (!$extension.ContainsKey("Path")) { # Call the helper that will install the extension if it's not already installed and # provide the resulting additional metadata that we need to use the extension $extension += Get-ExtensionFromRepository @splat #- $extensionName -Repository $extensionRepo -ExtensionVersion $extensionVersion -AllowPreRelease:$extensionAllowPreRelease } elseif ((Test-Path $extension.Path)) { $extension.Add("Enabled", $true) Write-Host "USING: $Name ($($extension.Path))" -f Cyan continue } else { Write-Warning "Extension '$extensionName' not found at $($extension.Path) - it has been disabled." $extension.Add("Enabled", $false) continue } # Persist the fully-populated extension metadata $ExtensionsConfig[$i] = $extension } return $ExtensionsConfig } |