in src/handler.ts [88:177]
export async function execute(config: ActionConfig, files: ParsedFiles) {
try {
validateFileScope(config, files);
switch (config.type) {
case "deployment": {
switch (config.operation) {
case "create": {
await tryWithErrorHandling(
async () => {
const result = await deploymentCreate(config, files);
setCreateOutputs(config, result?.properties?.outputs);
},
error => {
logError(JSON.stringify(error, null, 2));
setFailed("Create failed");
},
);
break;
}
case "validate": {
await tryWithErrorHandling(
async () => {
const result = await deploymentValidate(config, files);
logDiagnostics(result?.properties?.diagnostics ?? []);
},
error => {
logError(JSON.stringify(error, null, 2));
setFailed("Validation failed");
},
);
break;
}
case "whatIf": {
const result = await deploymentWhatIf(config, files);
const formatted = formatWhatIfOperationResult(result, "ansii");
logInfoRaw(formatted);
logDiagnostics(result.diagnostics ?? []);
break;
}
}
break;
}
case "deploymentStack": {
switch (config.operation) {
case "create": {
await tryWithErrorHandling(
async () => {
const result = await stackCreate(config, files);
setCreateOutputs(config, result?.properties?.outputs);
},
error => {
logError(JSON.stringify(error, null, 2));
setFailed("Create failed");
},
);
break;
}
case "validate": {
await tryWithErrorHandling(
() => stackValidate(config, files),
error => {
logError(JSON.stringify(error, null, 2));
setFailed("Validation failed");
},
);
break;
}
case "delete": {
await stackDelete(config);
break;
}
}
break;
}
}
} catch (error) {
if (error instanceof RestError && error.response?.bodyAsText) {
const correlationId = error.response.headers.get(
"x-ms-correlation-request-id",
);
logError(`Request failed. CorrelationId: ${correlationId}`);
const responseBody = JSON.parse(error.response.bodyAsText);
logError(JSON.stringify(responseBody, null, 2));
}
setFailed("Operation failed");
throw error;
}
}