Helper function for execution of xcversion with more than one attempt. (#2700)

* Invoke-XCVersion function has been created

* PR Comments resolving

* $result.Output | ForEach-Object { Write-Host $_ } has been added

* $PauseDuration -> $PauseDurationSecs

* Fixing the attempt indexing
This commit is contained in:
Andy Mishechkin
2021-02-17 12:03:31 +04:00
committed by GitHub
parent 97ca8d937c
commit f889dd8d68
2 changed files with 32 additions and 4 deletions

View File

@@ -121,4 +121,34 @@ function Get-XcodePairsList {
$result += "$watchName $phoneName"
}
return $result
}
#Helper function for execution of xcversion due to: https://github.com/fastlane/fastlane/issues/18161
function Invoke-XCVersion {
param(
[Parameter(Mandatory)]
[string] $Arguments,
[Parameter()]
[int] $RetryAttempts = 7,
[Parameter()]
[int] $PauseDurationSecs = 1
)
$Command = "xcversion $Arguments"
Write-Host "Execute [$Command]"
for ($Attempt=1; $Attempt -le $RetryAttempts; $Attempt++) {
Write-Host "Current attempt: [$Attempt]"
$result = Get-CommandResult -Command $Command -Multiline
Write-Host "Exit code: [$($result.ExitCode)]"
Write-Host "Output message: "
$result.Output | ForEach-Object { Write-Host $_ }
if ($result.ExitCode -ne 0) {
Start-Sleep -Seconds $PauseDurationSecs
} else {
return $result.Output
}
}
if ($result.ExitCode -ne 0) {
throw "Command [$Command] has finished with non-zero exit code."
}
}

View File

@@ -27,10 +27,8 @@ function Invoke-DownloadXcodeArchive {
if (-not $resolvedVersion) {
throw "Version '$Version' can't be matched to any available version"
}
# TO-DO: Consider replacing of xcversion with own implementation
Write-Host "Downloading Xcode $resolvedVersion"
Invoke-ValidateCommand "xcversion install '$resolvedVersion' --no-install"
Invoke-XCVersion -Arguments "install '$resolvedVersion' --no-install"
}
function Resolve-ExactXcodeVersion {
@@ -51,7 +49,7 @@ function Resolve-ExactXcodeVersion {
}
function Get-AvailableXcodeVersions {
$rawVersionsList = & xcversion list | ForEach-Object { $_.Trim() } | Where-Object { $_ -match "^\d" }
$rawVersionsList = Invoke-XCVersion -Arguments "list" | ForEach-Object { $_.Trim() } | Where-Object { $_ -match "^\d" }
$availableVersions = $rawVersionsList | ForEach-Object {
$partStable,$partMajor = $_.Split(" ", 2)
$semver = $stableSemver = [SemVer]::Parse($partStable)