Skip to content

Commit 50e0165

Browse files
azure-sdklive1206Copilot
authored
Sync eng/common directory with azure-sdk-tools for PR 14461 (#45646)
* Add DirectoryFilterPattern parameter to regeneration pipeline Add DirectoryFilterPattern parameter to archetype-typespec-emitter.yml and New-RegenerateMatrix.ps1 to allow filtering the regeneration matrix by package directory name pattern. This enables azure-sdk-for-net's http-client-csharp-mgmt CI to only regenerate Azure.ResourceManager* SDKs instead of all TypeSpec SDKs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Handle empty filter results with array wrapping and early error Address review feedback: wrap filtered results in @() to ensure reliable .Count, and fail fast with a clear error when no directories match the filter pattern. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Support comma-separated filter patterns Update DirectoryFilterPattern to split on commas and match any pattern, so callers can filter to multiple SDK prefixes (e.g., 'Azure.ResourceManager*,Azure.Provisioning*'). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Wei Hu <live1206@gmail.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 5333117 commit 50e0165

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

eng/common/pipelines/templates/archetype-typespec-emitter.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ parameters:
6767
type: boolean
6868
default: false
6969

70+
# Optional filter pattern for directory names (e.g., 'Azure.ResourceManager*' to only regenerate management SDKs)
71+
- name: DirectoryFilterPattern
72+
type: string
73+
default: ''
74+
7075
# Paths to sparse checkout
7176
- name: SparseCheckoutPaths
7277
type: object
@@ -352,6 +357,7 @@ extends:
352357
-JobCount ${{ parameters.RegenerationJobCount }}
353358
-MinimumPerJob ${{ parameters.MinimumPerJob }}
354359
-OnlyTypespec ${{ parameters.OnlyGenerateTypespec }}
360+
-DirectoryFilterPattern '${{ parameters.DirectoryFilterPattern }}'
355361
workingDirectory: $(Build.SourcesDirectory)
356362

357363
- template: /eng/common/pipelines/templates/steps/publish-1es-artifact.yml

eng/common/scripts/New-RegenerateMatrix.ps1

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ param (
1414
[int]$MinimumPerJob = 10,
1515

1616
[Parameter()]
17-
[string]$OnlyTypeSpec
17+
[string]$OnlyTypeSpec,
18+
19+
# Optional comma-separated filter patterns applied to package directory names
20+
# (e.g., 'Azure.ResourceManager*,Azure.Provisioning*')
21+
[Parameter()]
22+
[string]$DirectoryFilterPattern
1823
)
1924

2025
. (Join-Path $PSScriptRoot common.ps1)
@@ -66,6 +71,23 @@ else {
6671
}
6772
}
6873

74+
if ($DirectoryFilterPattern) {
75+
$patterns = $DirectoryFilterPattern -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ }
76+
$directoriesForGeneration = @($directoriesForGeneration | Where-Object {
77+
$name = $_.Name
78+
$patterns | Where-Object { $name -like $_ }
79+
})
80+
Write-Host "Filtered directories to pattern(s) '$DirectoryFilterPattern': $($directoriesForGeneration.Count) matches"
81+
}
82+
else {
83+
$directoriesForGeneration = @($directoriesForGeneration)
84+
}
85+
86+
if ($directoriesForGeneration.Count -eq 0) {
87+
Write-Error "No directories found for generation after applying filters. DirectoryFilterPattern='$DirectoryFilterPattern', OnlyTypeSpec='$OnlyTypespec'."
88+
return
89+
}
90+
6991
[array]$packageDirectories = $directoriesForGeneration
7092
| Sort-Object -Property FullName
7193
| ForEach-Object {

0 commit comments

Comments
 (0)