diff --git a/eng/scripts/ChangedFiles-Functions.ps1 b/eng/scripts/ChangedFiles-Functions.ps1 index 0968b252df54..a2c9202db867 100644 --- a/eng/scripts/ChangedFiles-Functions.ps1 +++ b/eng/scripts/ChangedFiles-Functions.ps1 @@ -18,8 +18,8 @@ function Get-ChangedFiles($baseCommitish = "HEAD^", $targetCommitish = "HEAD", $ return $changedFiles } -function Get-ChangedSwaggerFiles() { - $changedFiles = Get-ChangedFilesUnderSpecification +function Get-ChangedSwaggerFiles($changedFiles = (Get-ChangedFiles)) { + $changedFiles = Get-ChangedFilesUnderSpecification($changedFiles) $changedSwaggerFiles = $changedFiles.Where({ $_.EndsWith(".json") diff --git a/eng/scripts/TypeSpec-Requirement.ps1 b/eng/scripts/TypeSpec-Requirement.ps1 index ee4855316a8b..e7909dc10026 100644 --- a/eng/scripts/TypeSpec-Requirement.ps1 +++ b/eng/scripts/TypeSpec-Requirement.ps1 @@ -1,5 +1,10 @@ [CmdletBinding()] param ( + [Parameter(Position = 0)] + [string] $BaseCommitish = "HEAD^", + [Parameter(Position = 1)] + [string] $TargetCommitish = "HEAD" + ) Set-StrictMode -Version 3 @@ -9,7 +14,7 @@ Set-StrictMode -Version 3 $repoPath = Resolve-Path "$PSScriptRoot/../.." $pathsWithErrors = @() -$filesToCheck = @(Get-ChangedSwaggerFiles).Where({ +$filesToCheck = (Get-ChangedSwaggerFiles (Get-ChangedFiles $BaseCommitish $TargetCommitish)).Where({ ($_ -notmatch "/(examples|scenarios|restler|common|common-types)/") -and ($_ -match "specification/[^/]+/(data-plane|resource-manager).*?/(preview|stable)/[^/]+/[^/]+\.json$") }) @@ -30,15 +35,21 @@ else { foreach ($file in $filesToCheck) { LogInfo "Checking $file" - $jsonContent = Get-Content (Join-Path $repoPath $file) | ConvertFrom-Json -AsHashtable + try { + $jsonContent = Get-Content (Join-Path $repoPath $file) | ConvertFrom-Json -AsHashtable - if ($null -ne ${jsonContent}?["info"]?["x-typespec-generated"]) { - LogInfo " OpenAPI was generated from TypeSpec (contains '/info/x-typespec-generated')" - # Skip further checks, since spec is already using TypeSpec - continue + if ($null -ne ${jsonContent}?["info"]?["x-typespec-generated"]) { + LogInfo " OpenAPI was generated from TypeSpec (contains '/info/x-typespec-generated')" + # Skip further checks, since spec is already using TypeSpec + continue + } + else { + LogInfo " OpenAPI was not generated from TypeSpec (missing '/info/x-typespec-generated')" + } } - else { - LogInfo " OpenAPI was not generated from TypeSpec (missing '/info/x-typespec-generated')" + catch { + LogWarning " OpenAPI cannot be parsed as JSON, so assuming not generated from TypeSpec" + LogWarning " $_" } # Extract path between "specification/" and "/(preview|stable)"