Skip to content

Commit 8e20ba4

Browse files
tsp, temporary use emitter option service-version-exclude-preview to enable "filter out preview if GA api-version" (#2872)
1 parent 110aa8f commit 8e20ba4

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

typespec-extension/src/code-model-builder.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,11 @@ export class CodeModelBuilder {
546546
}
547547

548548
codeModelClient.apiVersions = [];
549-
for (const version of this.getFilteredApiVersions(this.apiVersion, versioning.getVersions())) {
549+
for (const version of this.getFilteredApiVersions(
550+
this.apiVersion,
551+
versioning.getVersions(),
552+
this.options["service-version-exclude-preview"],
553+
)) {
550554
const apiVersion = new ApiVersion();
551555
apiVersion.version = version.value;
552556
codeModelClient.apiVersions.push(apiVersion);
@@ -645,19 +649,23 @@ export class CodeModelBuilder {
645649

646650
/**
647651
* Filter api-versions for "ServiceVersion".
648-
* TODO(xiaofei) pending TCGC design: https://github.com/Azure/typespec-azure/issues/746
652+
* TODO(xiaofei) pending TCGC design: https://github.com/Azure/typespec-azure/issues/965
649653
*
650654
* @param pinnedApiVersion the api-version to use as filter base
651655
* @param versions api-versions to filter
652656
* @returns filtered api-versions
653657
*/
654-
private getFilteredApiVersions(pinnedApiVersion: Version | undefined, versions: Version[]): Version[] {
658+
private getFilteredApiVersions(
659+
pinnedApiVersion: Version | undefined,
660+
versions: Version[],
661+
excludePreview: boolean = false,
662+
): Version[] {
655663
if (!pinnedApiVersion) {
656664
return versions;
657665
}
658666
return versions
659667
.slice(0, versions.indexOf(pinnedApiVersion) + 1)
660-
.filter((version) => !isStable(pinnedApiVersion) || isStable(version));
668+
.filter((version) => !excludePreview || !isStable(pinnedApiVersion) || isStable(version));
661669
}
662670

663671
/**

typespec-extension/src/emitter.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export interface EmitterOptions {
4545

4646
"advanced-versioning"?: boolean;
4747
"api-version"?: string;
48+
"service-version-exclude-preview"?: boolean;
4849

4950
"dev-options"?: DevOptions;
5051
}
@@ -93,8 +94,10 @@ const EmitterOptionsSchema: JSONSchemaType<EmitterOptions> = {
9394
"polling": { type: "object", additionalProperties: true, nullable: true },
9495

9596
"group-etag-headers": { type: "boolean", nullable: true },
97+
9698
"advanced-versioning": { type: "boolean", nullable: true, default: false },
9799
"api-version": { type: "string", nullable: true },
100+
"service-version-exclude-preview": { type: "boolean", nullable: true, default: false },
98101

99102
"dev-options": { type: "object", additionalProperties: true, nullable: true },
100103
},

typespec-tests/Generate.ps1

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ $generateScript = {
5656
} elseif ($tspFile -match "tsp[\\/]versioning.tsp") {
5757
# test generating from specific api-version
5858
$tspOptions += " --option ""@azure-tools/typespec-java.api-version=2022-09-01"""
59+
# exclude preview from service versions
60+
$tspOptions += " --option ""@azure-tools/typespec-java.service-version-exclude-preview=true"""
5961
} elseif ($tspFile -match "arm.tsp") {
6062
# for mgmt, do not generate tests due to random mock values
6163
$tspOptions += " --option ""@azure-tools/typespec-java.generate-tests=false"""
@@ -65,6 +67,8 @@ $generateScript = {
6567
$tspOptions += " --option ""@azure-tools/typespec-java.group-etag-headers=false"""
6668
# also test generating from specific api-version
6769
$tspOptions += " --option ""@azure-tools/typespec-java.api-version=2023-11-01"""
70+
# exclude preview from service versions
71+
$tspOptions += " --option ""@azure-tools/typespec-java.service-version-exclude-preview=true"""
6872
} elseif ($tspFile -match "arm-stream-style-serialization.tsp") {
6973
$tspOptions += " --option ""@azure-tools/typespec-java.stream-style-serialization=true"""
7074
# for mgmt, do not generate tests due to random mock values

0 commit comments

Comments
 (0)