HelperFunctions.ps1
function Dump-InstalledPackages { param($InstalledPackages) $InstalledPackages | ConvertTo-Json | Out-File $script:InstalledPackagesPath -Force } function Dump-RegisteredPackageSources { $script:RegisteredPackageSources | Select * -ExcludeProperty Headers | ConvertTo-Json | Out-File $script:RegisteredPackageSourcesPath -Force } function Get-PackageSources { param( [Parameter(Mandatory)] $request ) $Sources = if ($request.PackageSources) { $script:RegisteredPackageSources | ? Name -in $request.PackageSources } else { $script:RegisteredPackageSources } $Sources | ? {-not $_.Headers} | % { if ($request.Credential) { Set-PackageSourcePrivateToken -Source $_.Name -Credential $request.Credential } else { $msg = "Credentials are required for source $($_.Name)" Write-Error -Message $msg -ErrorId CredentialsNotSpecified -Category InvalidOperation -TargetObject $_.Name } } $Sources } function Set-PackageSourcePrivateToken { param( [Parameter(Mandatory)] [string[]] $Source, [Parameter(Mandatory)] [pscredential] $Credential ) $Source | % { $PackageSource = $script:RegisteredPackageSources | ? Name -eq $_ if (-not $PackageSource.Headers) { $Auth = @{ login = $Credential.UserName password = $Credential.GetNetworkCredential().Password } $Location = $PackageSource.Location.TrimEnd('/') $PrivateToken = (Invoke-RestMethod -Uri ($Location + '/session') -Method Post -Body $Auth).'private_token' $Headers = @{ 'PRIVATE-TOKEN' = $PrivateToken #'SUDO' = 'root' } $PackageSource | Add-Member -MemberType NoteProperty -Name Headers -Value $Headers -TypeName hashtable } } } function ConvertTo-Hashtable { param( [Parameter(Mandatory,ValueFromPipeline)] $Object ) Process { $ht = @{} $Object | Get-Member -MemberType Properties | % { $ht[$_.Name] = $Object.($_.Name) } $ht } } |