@@ -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+
6094Write-Log " Starting TypeSpec generator update process"
6195Write-Log " Target version: $PackageVersion "
6296Write-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