Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
caeecb8
Added preliminary Rust binding to a whole lot of tspconfig.yaml files
LarryOsterman Nov 19, 2025
5d555e4
Fixed default crate version
LarryOsterman Nov 19, 2025
e5364fb
Reduced diff; verified package names
LarryOsterman Nov 20, 2025
596055d
One other unnecessary modification
LarryOsterman Nov 20, 2025
3097974
Merge branch 'main' into larryo/add_rust_tspconfigs
LarryOsterman Nov 20, 2025
f563b9f
Use double quotes for typespec-rust, not single quotes
LarryOsterman Nov 20, 2025
89cb592
Fixed quotes
LarryOsterman Nov 20, 2025
78a2184
Next TypeSpec Validation error
LarryOsterman Nov 20, 2025
1ceee62
prettier fixes 2
LarryOsterman Nov 20, 2025
4586277
Merge branch 'main' into larryo/add_rust_tspconfigs
LarryOsterman Nov 20, 2025
060a3a2
Use correct name and location for ARM crates
LarryOsterman Nov 21, 2025
13ca73d
Merge branch 'main' into larryo/add_rust_tspconfigs
LarryOsterman Nov 21, 2025
a5babae
Fixed huge typo in output-dir
LarryOsterman Nov 21, 2025
a0e2d88
Merge branch 'larryo/add_rust_tspconfigs' of https://github.com/Larry…
LarryOsterman Nov 21, 2025
91db6ef
Added a couple of preliminary rust validations
LarryOsterman Nov 21, 2025
9701966
Removed a validation
LarryOsterman Nov 21, 2025
68444bc
Added suppressions for rust
LarryOsterman Nov 21, 2025
a850334
More suppressions
LarryOsterman Nov 21, 2025
30559e1
Accidentally deleted a line
LarryOsterman Nov 21, 2025
29a41a7
3 more suppressions
LarryOsterman Nov 21, 2025
dba6513
Rust doesn't require azure flavor
LarryOsterman Nov 22, 2025
2682457
Merge branch 'main' into larryo/add_rust_tspconfigs
LarryOsterman Nov 22, 2025
faa62cc
Validate service crate directories
LarryOsterman Nov 24, 2025
b7cde68
Merge branch 'larryo/add_rust_tspconfigs' of https://github.com/Larry…
LarryOsterman Nov 24, 2025
21213c3
Add error text for missing emitterOutputDir
LarryOsterman Nov 24, 2025
82889ff
Tightened output directory rule; added more suppressions
LarryOsterman Nov 24, 2025
41e72ec
Prettier
LarryOsterman Nov 24, 2025
e496ccd
Another try at validating emiter output dir
LarryOsterman Nov 24, 2025
c09ebe4
Prettier
LarryOsterman Nov 24, 2025
f8f5ea2
Update specification/suppressions.yaml
LarryOsterman Nov 25, 2025
650135c
Merge remote-tracking branch 'origin/main' into test_rust
Jan 8, 2026
5935964
refactor(rust): update TspConfigRustAzEmitterOutputDirSubRule regex a…
Jan 8, 2026
adc64f2
refactor(rust): update TspConfigRustAzEmitterOutputDirSubRule regex a…
Jan 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
/* eslint-disable */
// TODO: Enable eslint, fix errors

Expand Down Expand Up @@ -264,6 +264,10 @@
);

let actualValue = option as unknown as undefined | string | boolean;
// First try to validate directly
if (this.validateValue(actualValue, this.expectedValue)) {
return { success: true };
}

// Resolve variables if the value is a string
if (typeof actualValue === "string" && actualValue.includes("{")) {
Expand Down Expand Up @@ -772,6 +776,30 @@
}
}

// ----- Rust sub rules -----
export class TspConfigRustMgmtCrateNameSubRule extends TspconfigEmitterOptionsSubRuleBase {
constructor() {
super(
"@azure-tools/typespec-rust",
"crate-name",
new RegExp(/^azure_resourcemanager_(?:[a-z0-9]+_)*[a-z0-9]+$/),
);
}
protected skip(_: any, folder: string) {
return skipForDataPlane(folder);
}
}

export class TspConfigRustAzEmitterOutputDirSubRule extends TspconfigEmitterOptionsSubRuleBase {
constructor() {
super(
"@azure-tools/typespec-rust",
"emitter-output-dir",
new RegExp(/^{output-dir}\/{service-dir}\/{crate-name}$/),
);
}
}

/**
* Required rules: When a tspconfig.yaml exists, any applicable rule in the requiredRules array
* that fails validation will cause the entire SdkTspConfigValidationRule to fail. For example,
Expand Down Expand Up @@ -817,6 +845,8 @@
new TspConfigCsharpDpNamespaceSubRule(),
new TspConfigCsharpMgmtNamespaceSubRule(),
new TspConfigCsharpMgmtEmitterOutputDirSubRule(),
new TspConfigRustMgmtCrateNameSubRule(),
new TspConfigRustAzEmitterOutputDirSubRule(),
new TspConfigGoDpServiceDirMatchPatternSubRule(),
new TspConfigGoDpEmitterOutputDirMatchPatternSubRule(),
new TspConfigGoDpModuleMatchPatternSubRule(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
/* eslint-disable */
// TODO: Enable eslint, fix errors

Expand Down Expand Up @@ -35,6 +35,7 @@
TspConfigPythonMgmtPackageGenerateSampleTrueSubRule,
TspConfigPythonMgmtPackageGenerateTestTrueSubRule,
TspConfigPythonNamespaceMatchesEmitterOutputDirSubRule,
TspConfigRustAzEmitterOutputDirSubRule,
TspconfigSubRuleBase,
TspConfigTsDpEmitterOutputDirSubRule,
TspConfigTsMgmtModularEmitterOutputDirSubRule,
Expand Down Expand Up @@ -850,6 +851,15 @@
},
];

const rushEmitterOutputDirTestCases = createEmitterOptionTestCases(
"@azure-tools/typespec-rust",
managementTspconfigFolder,
"emitter-output-dir",
"{output-dir}/{service-dir}/{crate-name}",
"{output-dir}/{service-dir}/aaa-bbb",
[new TspConfigRustAzEmitterOutputDirSubRule()],
);

describe("tspconfig", function () {
let fileExistsSpy: MockInstance;
let readTspConfigSpy: MockInstance;
Expand Down Expand Up @@ -914,6 +924,8 @@
...goDpServiceDirTestCases,
...goDpModuleTestCases,
...goDpContainingModuleTestCases,
// rust
...rushEmitterOutputDirTestCases,
];

it.each([...requiredTestCases, ...optionalTestCases])(`$description`, async (c: Case) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ options:
generate-test: true
generate-sample: true
flavor: "azure"
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_advisor"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-advisor"
namespace: "com.azure.resourcemanager.advisor"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ options:
flavor: "azure"
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_agricultureplatform"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-agricultureplatform"
namespace: "com.azure.resourcemanager.agricultureplatform"
Expand Down
4 changes: 4 additions & 0 deletions specification/ai/Azure.AI.Agents/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ options:
generate-test: false
generate-sample: false
examples-dir: "{project-root}/examples"
"@azure-tools/typespec-rust":
crate-name: azure_ai_agents
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
api-version: "2025-05-15-preview"
Expand Down
4 changes: 4 additions & 0 deletions specification/ai/Azure.AI.Projects/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ options:
flavor: azure
generate-test: true
generate-sample: false
"@azure-tools/typespec-rust":
crate-name: azure_ai_projects
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@typespec/http-client-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{package-name}"
package-name: Azure.AI.Projects
Expand Down
6 changes: 6 additions & 0 deletions specification/ai/ContentUnderstanding/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ options:
generate-test: true
generate-sample: true
flavor: azure
"@azure-tools/typespec-rust":
crate-name: azure_ai_contentunderstanding
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-ts":
emitter-output-dir: "{output-dir}/{service-dir}/ai-content-understanding-rest"
package-details:
Expand All @@ -48,3 +52,5 @@ options:
partial-update: true
use-eclipse-language-server: false
flavor: azure
generate-test: false
generate-sample: false
4 changes: 4 additions & 0 deletions specification/ai/DocumentIntelligence/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ options:
flavor: azure
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: azure_ai_documentintelligence
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-ai-documentintelligence"
namespace: "com.azure.ai.documentintelligence"
Expand Down
4 changes: 4 additions & 0 deletions specification/ai/Face/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ options:
flavor: azure
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: azure_ai_vision_face
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
namespace: "Azure.AI.Vision.Face"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ options:
flavor: azure
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: azure_healthinsights_radiologyinsights
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-health-insights-radiologyinsights"
package-version: 1.1.0
Expand Down
4 changes: 4 additions & 0 deletions specification/ai/ImageAnalysis/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ options:
flavor: azure
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: azure_ai_vision_imageanalysis
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
namespace: "Azure.AI.Vision.ImageAnalysis"
Expand Down
4 changes: 4 additions & 0 deletions specification/apicenter/ApiCenter.DataApi/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ options:
flavor: azure
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: azure_apicenter
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
namespace: "azure.ApiCenter"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ options:
# namespace: "com.azure.resourcemanager.appcomplianceautomation"
# service-name: "App Compliance Automation"
# examples-directory: "{project-root}/examples"
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_appcomplianceautomation"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-go":
service-dir: "sdk/resourcemanager/appcomplianceautomation"
emitter-output-dir: "{output-dir}/{service-dir}/armappcomplianceautomation"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ options:
flavor: azure
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: azure_appconfiguration
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
namespace: "Azure.Data.AppConfiguration"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ options:
generate-test: true
generate-sample: true
flavor: azure
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_appconfiguration"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
clear-output-folder: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ options:
flavor: azure
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: azure_applicationinsights_livemetrics
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
namespace: "LiveMetrics"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ options:
flavor: "azure"
generate-test: false
generate-sample: false
"@azure-tools/typespec-rust":
crate-name: azure_security_attestation
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
namespace: "Azure.Security.Attestation"
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ options:
generate-test: true
generate-sample: true
flavor: "azure"
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_dependencymap"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-dependencymap"
namespace: "com.azure.resourcemanager.dependencymap"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ options:
generate-test: true
generate-sample: true
flavor: "azure"
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_computefleet"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-computefleet"
namespace: com.azure.resourcemanager.computefleet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ options:
flavor: "azure"
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_azurestackhcivm"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-go":
service-dir: "sdk/resourcemanager/azurestackhci"
emitter-output-dir: "{output-dir}/{service-dir}/armazurestackhcivm"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ options:
generate-test: true
generate-sample: true
flavor: azure
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_placeholder"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
flavor: azure
namespace: com.azure.resourcemanager.azurestackhci
Expand Down
4 changes: 4 additions & 0 deletions specification/batch/Azure.Batch/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ options:
flavor: azure
generate-test: false
generate-sample: false
"@azure-tools/typespec-rust":
crate-name: azure_batch
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-ts":
emitter-output-dir: "{output-dir}/{service-dir}/batch-rest"
is-modular-library: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ options:
generate-test: true
generate-sample: true
flavor: "azure"
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_billingbenefits"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-billingbenefits"
namespace: "com.azure.resourcemanager.billingbenefits"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ options:
generate-test: true
generate-sample: true
flavor: "azure"
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_botservice"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-botservice"
namespace: "com.azure.resourcemanager.botservice"
Expand Down
4 changes: 4 additions & 0 deletions specification/carbon/Carbon.Management/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ options:
flavor: "azure"
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_carbonoptimization"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-typespec/http-client-csharp-mgmt":
namespace: "Azure.ResourceManager.CarbonOptimization"
emitter-output-dir: "{output-dir}/sdk/carbon/{namespace}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ options:
generate-test: true
generate-sample: true
flavor: "azure"
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_cdn"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-cdn"
namespace: "com.azure.resourcemanager.cdn"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ options:
generate-test: true
generate-sample: true
flavor: "azure"
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_edgeactions"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-edgeactions"
namespace: "com.azure.resourcemanager.edgeactions"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ options:
flavor: "azure"
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_chaos"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
flavor: azure
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ options:
flavor: "azure"
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_cloudhealth"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-typespec/http-client-csharp-mgmt":
namespace: "Azure.ResourceManager.CloudHealth"
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ options:
flavor: "azure"
generate-test: true
generate-sample: true
"@azure-tools/typespec-rust":
crate-name: "azure_resourcemanager_trustedsigning"
crate-version: "0.1.0"
emitter-output-dir: "{output-dir}/{service-dir}/{crate-name}"
"@azure-tools/typespec-ts":
experimental-extensible-enums: true
emitter-output-dir: "{output-dir}/{service-dir}/arm-trustedsigning"
Expand Down
Loading
Loading