UNPKG

@azure-tools/typespec-azure-resource-manager

Version:

TypeSpec Azure Resource Manager library

35 lines 1.47 kB
import { createRule, paramMessage } from "@typespec/compiler"; import { getArmResources } from "../resource.js"; import { getInterface } from "./utils.js"; /** * verify an resource should have delete operation */ export const deleteOperationMissingRule = createRule({ name: "no-resource-delete-operation", severity: "warning", url: "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/rules/no-resource-delete-operation", description: "Check for resources that must have a delete operation.", messages: { default: paramMessage `Resource '${"name"}' must have a delete operation.`, }, create(context) { return { model: (model) => { const resources = getArmResources(context.program); const armResource = resources.find((re) => re.typespecType === model); if (armResource && armResource.operations.lifecycle.createOrUpdate && !armResource.operations.lifecycle.delete) { const resourceInterface = getInterface(armResource); context.reportDiagnostic({ target: resourceInterface ?? model, format: { name: armResource.name, }, }); } }, }; }, }); //# sourceMappingURL=no-resource-delete-operation.js.map