Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- param(
- [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
- [ValidateSet("public","internal","internal-nonprod")]
- [string] $FromFeed,
- [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
- [ValidateSet("public","internal","internal-nonprod")]
- [string] $ToFeed,
- [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
- [string] $PackageName,
- [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
- [string] $Version
- )
- import-module secretserverucsb
- Import-Module MyGetUcsb
- Import-Module CoreUcsb
- # Set up credentials
- $secret = get-secretserversecret -filter "myget.org - sist-ucsb" | where-object { $_.Id -eq 3386 }
- $username = $secret.Username
- $password = $secret.Password
- $pwSecure = ConvertTo-SecureString $password -AsPlainText -Force
- $credHeaderPair = "$($username):$($password)"
- $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $pwSecure
- $encodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credHeaderPair))
- # Set up local folder and download/delete uri's
- $mygetBaseDlUrl = $global:MyGetUcsb.FeedUrlFormat -f $FromFeed
- $mygetDlUrl = "{0}/{1}/{2}" -f $mygetBaseDlUrl, $PackageName, $Version
- $mygetDeleteUrl = "{0}?hardDelete=true" -f $mygetDlUrl
- $tempPath = [System.IO.Path]::GetTempPath()
- $tempDlFolder = "{0}{1}.{2}" -f $tempPath, $PackageName, $Version
- $tempDlPath = "{0}\{1}.{2}.nupkg" -f $tempDlFolder, $PackageName, $Version
- # Create temporary local folder
- if((Test-Path $tempDlFolder) -eq $false) { mkdir $tempDlFolder }
- # Download the package to local disk
- Invoke-WebRequest -Uri $mygetDlUrl -UseBasicParsing -OutFile $tempDlPath -Credential $cred -Verbose
- # Push up the downloaded package to the new feed
- $moduleBase = (Get-Module -Name MyGetUcsb).ModuleBase
- $nuget = "{0}\Resources\nuget.exe" -f $moduleBase
- $toFeedUrl = $global:MyGetUcsb.FeedUrlFormat -f $ToFeed
- . $nuget push $tempDlPath -NonInteractive -Source $toFeedUrl -ApiKey $global:MyGetUcsb.ApiKey -NonInteractive -Verbosity Detailed
- # Remove the package from the original feed
- $fromFeedUrl = $global:MyGetUcsb.FeedUrlFormat -f $FromFeed
- Invoke-WebRequest -Uri $mygetDeleteUrl -Method DELETE -Headers @{ Authorization = "Basic $encodedCredentials" } -Verbose
- # Remove the temporary files from disk
- if(Test-Path $tempDlFolder) { rmdir $tempDlFolder -Recurse -Verbose }
Add Comment
Please, Sign In to add comment