export async function execute()

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;
  }
}