- name
- bump-mgmt-base-version
- description
- Bump the http-client-csharp base dependency version in http-client-csharp-mgmt. Updates emitter (npm) and generator (NuGet) references, rebuilds, and regenerates test projects.
# Skill: bump-mgmt-base-version
Bump the base `http-client-csharp` dependency used by the management-plane generator (`http-client-csharp-mgmt`). This updates both the npm emitter dependency and the 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 **target version**.
### 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"]` | 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 both already match the target version, no update is needed — inform the user and stop.
### 3. Update version references
Update **both** files to the target version:
1. **`eng/packages/http-client-csharp-mgmt/package.json`**: Change the `@azure-typespec/http-client-csharp` version in `dependencies`.
2. **`eng/centralpackagemanagement/Directory.Generation.Packages.props`**: Change the `<AzureGeneratorVersion>` value.
### 4. Run npm install
```shell
cd eng/packages/http-client-csharp-mgmt
npm install
```
This updates `package-lock.json` to resolve the new dependency version.
### 5. Build the emitter
```shell
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
```shell
cd eng/packages/http-client-csharp-mgmt
npm run lint
npm run prettier
```
If lint or prettier checks fail, fix with:
```shell
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
```shell
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
```shell
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-TypeSpec` test project under `generator/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
```shell
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 status` to see all modified files
- 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 |
Auf GitHub ansehen