Skip to content

Commit 4709a93

Browse files
fix: add automation for updating tcgc version (#607)
1 parent ff21e64 commit 4709a93

File tree

1 file changed

+71
-3
lines changed

1 file changed

+71
-3
lines changed

scripts/Submit-GeneratorUpdatePr.ps1

Lines changed: 71 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,40 @@ function Write-Error-Log {
5757
Write-Host "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss'): ERROR: $Message" -ForegroundColor Red
5858
}
5959

60+
# Function to get package dependencies using npm view
61+
function Get-PackageDependencies {
62+
param([string]$PackageName, [string]$PackageVersion)
63+
64+
Write-Log "Fetching dependencies for $PackageName version $PackageVersion"
65+
66+
try {
67+
# Properly format the package specification for npm view
68+
$packageSpec = "$PackageName@$PackageVersion"
69+
70+
# Run npm view command and parse JSON output
71+
$npmViewOutput = & npm view $packageSpec devDependencies --json 2>&1
72+
73+
# Check if there was an error
74+
if ($LASTEXITCODE -ne 0) {
75+
Write-Warning-Log "Failed to get dependencies for $PackageName version $PackageVersion. Error: $npmViewOutput"
76+
return $null
77+
}
78+
79+
# Parse the JSON output
80+
$dependencies = $npmViewOutput | ConvertFrom-Json
81+
82+
return $dependencies
83+
}
84+
catch {
85+
Write-Warning-Log "Error fetching dependencies for $PackageName version $PackageVersion $_"
86+
return $null
87+
}
88+
}
89+
90+
$InjectedDependencies = @(
91+
'@azure-tools/typespec-client-generator-core'
92+
)
93+
6094
Write-Log "Starting TypeSpec generator update process"
6195
Write-Log "Target version: $PackageVersion"
6296
Write-Log "Repository: $RepoOwner/$RepoName"
@@ -96,6 +130,34 @@ try {
96130

97131
# Update OpenAI package.json
98132
Write-Log "Updating OpenAI package.json"
133+
# Fetch dependencies of the http-client-csharp package
134+
$httpClientDependencies = Get-PackageDependencies -PackageName '@typespec/http-client-csharp' -PackageVersion $PackageVersion
135+
136+
# Update the injected dependencies in the package.json
137+
if ($httpClientDependencies -ne $null) {
138+
Write-Log "Updating injected dependencies in OpenAI package.json"
139+
140+
foreach ($dependency in $InjectedDependencies) {
141+
if ($httpClientDependencies.PSObject.Properties.Name -contains $dependency) {
142+
$dependencyVersion = $httpClientDependencies.$dependency
143+
Write-Log "Updating $dependency to version $dependencyVersion"
144+
145+
# Update the dependency in the package.json
146+
if ($openAiPackageJson.dependencies.PSObject.Properties.Name -contains $dependency) {
147+
$openAiPackageJson.dependencies.$dependency = $dependencyVersion
148+
Write-Log "Updated $dependency to version $dependencyVersion"
149+
} else {
150+
Write-Warning-Log "Dependency $dependency not found in package.json"
151+
}
152+
} else {
153+
Write-Warning-Log "Dependency $dependency not found in @typespec/http-client-csharp version $PackageVersion"
154+
}
155+
}
156+
} else {
157+
Write-Warning-Log "Could not fetch dependencies for @typespec/http-client-csharp version $PackageVersion"
158+
}
159+
160+
99161
$openAiPackageJson.dependencies.'@typespec/http-client-csharp' = $PackageVersion
100162
$openAiPackageJson | ConvertTo-Json -Depth 10 | Set-Content -Path $openAiPackageJsonPath
101163

@@ -114,16 +176,22 @@ try {
114176
Write-Warning-Log "OpenAI csproj not found at: $openAiCsprojPath"
115177
}
116178

117-
# Install dependencies from codegen directory (using workspaces)
118-
Write-Log "Installing dependencies from codegen directory (using npm workspaces)"
119-
Push-Location "codegen"
179+
# Delete previous package-lock.json
180+
Write-Log "Deleting previous package-lock.json"
181+
if (Test-Path "package-lock.json") {
182+
Remove-Item -Path "package-lock.json" -Force
183+
}
184+
185+
# Install dependencies from root directory (using workspaces)
186+
Write-Log "Installing dependencies from root directory"
120187
npm install
121188
if ($LASTEXITCODE -ne 0) {
122189
throw "npm install failed"
123190
}
124191

125192
# Build OpenAI plugin
126193
Write-Log "Building OpenAI plugin"
194+
Push-Location "codegen"
127195
npm run clean && npm run build
128196
if ($LASTEXITCODE -ne 0) {
129197
Write-Warning-Log "OpenAI plugin build failed, but continuing..."

0 commit comments

Comments
 (0)