Move client only rules(where the fix is a client.tsp augment) to a separate ruleset that would not apply to services that do not generate SDKs.
Proposal:
- Either have a
client-sdk or a <lang>-client-sdk per language.
- tsv enforce ruleset(s) are enabled when corresponding emitter has options defined
Examples
- Service X no sdk - valid
options:
"@azure-tools/typespec-autorest":
use-read-only-status-schema: true
emitter-output-dir: "{project-root}"
output-file: "{emitter-output-dir}/{version-status}/{version}/widget.json"
arm-types-dir: "{project-root}/../../../../common-types/resource-management"
examples-dir: "{emitter-output-dir}/{version-status}/{version}/examples"
skip-example-copying: true
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"
- Service X decide want to add c#
options:
"@azure-tools/typespec-autorest":
use-read-only-status-schema: true
emitter-output-dir: "{project-root}"
output-file: "{emitter-output-dir}/{version-status}/{version}/widget.json"
arm-types-dir: "{project-root}/../../../../common-types/resource-management"
examples-dir: "{emitter-output-dir}/{version-status}/{version}/examples"
skip-example-copying: true
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.Contoso"
clear-output-folder: true
model-namespace: false
namespace: "Azure.ResourceManager.Contoso"
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"
$ npx tsv specification/my-x
error specification/my-x/tspconfig.yaml - missing ruleset `csharp-client-sdk` or `client-sdk`
- Fix
options:
"@azure-tools/typespec-autorest":
use-read-only-status-schema: true
emitter-output-dir: "{project-root}"
output-file: "{emitter-output-dir}/{version-status}/{version}/widget.json"
arm-types-dir: "{project-root}/../../../../common-types/resource-management"
examples-dir: "{emitter-output-dir}/{version-status}/{version}/examples"
skip-example-copying: true
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.Contoso"
clear-output-folder: true
model-namespace: false
namespace: "Azure.ResourceManager.Contoso"
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"
- "@azure-tools/typespec-azure-rulesets/csharp-client-sdk" # error if missing
- "@azure-tools/typespec-azure-rulesets/client-sdk" # or
options:
"@azure-tools/typespec-autorest":
use-read-only-status-schema: true
emitter-output-dir: "{project-root}"
output-file: "{emitter-output-dir}/{version-status}/{version}/widget.json"
arm-types-dir: "{project-root}/../../../../common-types/resource-management"
examples-dir: "{emitter-output-dir}/{version-status}/{version}/examples"
skip-example-copying: true
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/Azure.ResourceManager.Contoso"
clear-output-folder: true
model-namespace: false
namespace: "Azure.ResourceManager.Contoso"
"@azure-tools/typespec-python":
emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-contoso"
namespace: "azure.mgmt.contoso"
generate-test: true
generate-sample: true
"@azure-tools/typespec-java":
emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-contoso"
namespace: "com.azure.resourcemanager.contoso"
service-name: "contoso"
"@azure-tools/typespec-ts":
emitter-output-dir: "{output-dir}/{service-dir}/arm-contoso"
experimental-extensible-enums: true
flavor: azure
package-details:
name: "@azure/arm-contoso"
"@azure-tools/typespec-go":
service-dir: "sdk/resourcemanager/contoso"
emitter-output-dir: "{output-dir}/{service-dir}/armcontoso"
module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armcontoso"
fix-const-stuttering: true
generate-samples: true
generate-fakes: true
head-as-boolean: true
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"
- "@azure-tools/typespec-azure-rulesets/csharp-client-sdk" # error if missing
- "@azure-tools/typespec-azure-rulesets/csharp-python-sdk" # error if missing
- "@azure-tools/typespec-azure-rulesets/client-sdk" # or
Move client only rules(where the fix is a client.tsp augment) to a separate ruleset that would not apply to services that do not generate SDKs.
Proposal:
client-sdkor a<lang>-client-sdkper language.Examples