Skill: bump-mgmt-base-version
Bump the base http-client-csharp dependencies used by the management-plane generator (http-client-csharp-mgmt). This updates the Azure and compatible unbranded npm emitter dependencies and the Azure NuGet generator dependency, then rebuilds and regenerates test projects.
When Invoked
Trigger phrases: "bump mgmt base version", "update http-client-csharp in mgmt", "bump generator version", "update mgmt dependency".
Instructions
1. Determine the target version
Read the latest version of @azure-typespec/http-client-csharp from:
eng/azure-typespec-http-client-csharp-emitter-package.json
Look at the dependencies["@azure-typespec/http-client-csharp"] value. This is the Azure target version.
Determine the unbranded target version required by that exact Azure package version:
npm view "@azure-typespec/http-client-csharp@<azure-target-version>" dependencies --json
Use the returned @typespec/http-client-csharp dependency version. The management emitter imports the unbranded package directly, so its pin must match the Azure package's dependency to avoid loading incompatible copies of the TypeSpec library.
2. Identify current versions
Check the current versions in these two files:
| File | Field | Purpose |
|---|---|---|
eng/packages/http-client-csharp-mgmt/package.json |
dependencies["@azure-typespec/http-client-csharp"] |
Azure emitter npm dependency |
eng/packages/http-client-csharp-mgmt/package.json |
dependencies["@typespec/http-client-csharp"] |
Compatible unbranded emitter npm dependency |
eng/centralpackagemanagement/Directory.Generation.Packages.props |
<AzureGeneratorVersion> |
Generator NuGet dependency (used by Azure.Generator.Management.csproj via <PackageReference Include="Azure.Generator" />) |
If all three already match their respective target versions, no update is needed — inform the user and stop.
3. Update version references
Update the version references:
eng/packages/http-client-csharp-mgmt/package.json:- Change
@azure-typespec/http-client-csharpindependenciesto the Azure target version. - Change
@typespec/http-client-csharpindependenciesto the unbranded target version required by the Azure package.
- Change
eng/centralpackagemanagement/Directory.Generation.Packages.props: Change<AzureGeneratorVersion>to the Azure target version.
4. Run npm install
cd eng/packages/http-client-csharp-mgmt
npm install
This updates package-lock.json to resolve the new dependency version.
5. Build the emitter
cd eng/packages/http-client-csharp-mgmt
npm run build:emitter
If TypeScript compilation fails, examine the errors — they likely indicate breaking API changes in the base @azure-typespec/http-client-csharp package. Fix the emitter source code under eng/packages/http-client-csharp-mgmt/emitter/ accordingly.
6. Lint and format the emitter
cd eng/packages/http-client-csharp-mgmt
npm run lint
npm run prettier
If lint or prettier checks fail, fix with:
npm run lint:fix
npm run prettier:fix
These checks are required to pass CI. Always run them after any emitter code changes.
7. Build the generator
cd eng/packages/http-client-csharp-mgmt
npm run build:generator
This runs dotnet build ./generator. The Azure.Generator.Management project references the Azure.Generator NuGet package, whose version is controlled by AzureGeneratorVersion in eng/centralpackagemanagement/Directory.Generation.Packages.props.
If C# compilation fails, examine the errors — they likely indicate breaking API changes in the Azure.Generator package. Fix the generator source code under eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/ accordingly.
8. Regenerate test projects
pwsh eng/packages/http-client-csharp-mgmt/eng/scripts/Generate.ps1
This script:
- Rebuilds the emitter and generator (via
Refresh-Mgmt-Build) - Regenerates the
Mgmt-TypeSpectest project undergenerator/TestProjects/Local/Mgmt-TypeSpec/ - Builds the regenerated test project to verify correctness
If regeneration produces file changes, they must be included in the commit.
9. Refresh the Emitter Version Dashboard
pwsh doc/GeneratorVersions/Emitter_Version_Dashboard.ps1
This regenerates doc/GeneratorVersions/Emitter_Version_Dashboard.md so the documented dependency chain matches the updated package.json versions. The updated dashboard file must be included in the commit.
10. Verify
- Run
git statusto see all modified files - Ensure both base dependencies in
package.jsonmatch the Azure package's compatible dependency chain - Ensure
package.json,package-lock.json,Directory.Generation.Packages.props,Emitter_Version_Dashboard.md, and any regenerated test project files are included - All changes should be committed together
Key Files Reference
| File | Role |
|---|---|
eng/azure-typespec-http-client-csharp-emitter-package.json |
Source of truth for latest base version |
eng/packages/http-client-csharp-mgmt/package.json |
Mgmt emitter npm dependencies |
eng/packages/http-client-csharp-mgmt/package-lock.json |
Resolved npm dependency tree |
eng/centralpackagemanagement/Directory.Generation.Packages.props |
NuGet version properties (AzureGeneratorVersion) |
eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Azure.Generator.Management.csproj |
Generator project referencing Azure.Generator |
eng/packages/http-client-csharp-mgmt/eng/scripts/Generate.ps1 |
Test project regeneration script |
eng/packages/http-client-csharp-mgmt/eng/scripts/Generation.psm1 |
Build and generation helper functions |
doc/GeneratorVersions/Emitter_Version_Dashboard.ps1 |
Script to regenerate the version dashboard |
doc/GeneratorVersions/Emitter_Version_Dashboard.md |
Emitter dependency version dashboard |