| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #!/usr/bin/env pwsh
- <#
- .SYNOPSIS
- Updates each repo Universe builds to new dependencies.props.
- .PARAMETER Source
- The NuGet package source to find the lineup on.
- .PARAMETER LineupID
- The ID of the Lineup to determine which versions to use.
- .PARAMETER LineupVersion
- The version of the Lineup to be used.
- .PARAMETER GitAuthorName
- The author name to use in the commit message. (Optional)
- .PARAMETER GitAuthorEmail
- The author email to use in the commit message. (Optional)
- .PARAMETER NoPush
- Make commits without pusing.
- #>
- [cmdletbinding(SupportsShouldProcess = $true)]
- param(
- [Parameter(Mandatory=$true)]
- [string]$Source,
- [Parameter(Mandatory=$true)]
- [string]$LineupID,
- [Parameter(Mandatory=$true)]
- [string]$LineupVersion,
- [switch]$NoPush,
- [string]$GitAuthorName = $null,
- [string]$GitAuthorEmail = $null,
- [string[]]$GitCommitArgs = @()
- )
- $ErrorActionPreference = 'Stop'
- Set-StrictMode -Version 2
- Import-Module "$PSScriptRoot/common.psm1" -Scope Local -Force
- $RepoRoot = Resolve-Path "$PSScriptRoot\.."
- $ModuleDirectory = Join-Path $RepoRoot "modules"
- $gitConfigArgs = @()
- if ($GitAuthorName) {
- $gitConfigArgs += '-c',"user.name=$GitAuthorName"
- }
- if ($GitAuthorEmail) {
- $gitConfigArgs += '-c',"user.email=$GitAuthorEmail"
- }
- Push-Location $ModuleDirectory
- try {
- # Init all submodules
- Invoke-Block { & git submodule update --init }
- $update_errors = @()
- $submodules = Get-Submodules $RepoRoot
- $updated_submodules = @()
- foreach($submodule in $submodules)
- {
- Push-Location $submodule.path
- try {
- $depsFile = Join-Path (Join-Path $($submodule.path) "build") "dependencies.props"
- if (!Test-Path $depsFile)
- {
- Write-Warning "No build\dependencies.props file exists for $($submodule.module). "
- continue
- }
- # Move to latest commit on tracked branch
- Invoke-Block { & git checkout --quiet $submodule.branch }
- Invoke-Block { & .\run.ps1 -Update upgrade deps --source $Source --id $LineupID --version $LineupVersion --deps-file $depsFile }
- Invoke-Block { & git add $depsFile }
- Invoke-Block { & git @gitConfigArgs commit --quiet -m "Update dependencies.props`n`n[auto-updated: dependencies]" @GitCommitArgs }
- $sshUrl = "[email protected]:aspnet/$($submodule.module)"
- Invoke-Block { & git remote set-url --push origin $sshUrl }
- $updated_submodules += $submodule
- }
- catch
- {
- $update_errors += $_
- }
- finally {
- Pop-Location
- }
- }
- if ($update_errors.Count -gt 0 )
- {
- throw 'Failed to update'
- }
- if (-not $NoPush -and ($Force -or ($PSCmdlet.ShouldContinue($shortMessage, 'Push the changes to these repos?'))))
- {
- $push_errors = @()
- foreach($submodule in $updated_submodules)
- {
- Push-Location $submodule.path
- try {
- Invoke-Block { & git @gitConfigArgs push origin $submodule.branch}
- }
- catch
- {
- $push_errors += $_
- }
- finally {
- Pop-Location
- }
- }
- if ($push_errors.Count -gt 0 )
- {
- throw 'Failed to push'
- }
- }
- }
- finally {
- Pop-Location
- }
|