"use strict";var _a;Object.defineProperty(exports,"__esModule",{value:!0}),exports.CodeBuildStartBuild=void 0;const jsiiDeprecationWarnings=require("../../../.warnings.jsii.js"),JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti"),codebuild=require("../../../aws-codebuild"),iam=require("../../../aws-iam"),sfn=require("../../../aws-stepfunctions"),cdk=require("../../../core"),task_utils_1=require("../private/task-utils");class CodeBuildStartBuild extends sfn.TaskStateBase{constructor(scope,id,props){super(scope,id,props),this.props=props;try{jsiiDeprecationWarnings.aws_cdk_lib_aws_stepfunctions_tasks_CodeBuildStartBuildProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,CodeBuildStartBuild),error}this.integrationPattern=props.integrationPattern??sfn.IntegrationPattern.REQUEST_RESPONSE,(0,task_utils_1.validatePatternSupported)(this.integrationPattern,CodeBuildStartBuild.SUPPORTED_INTEGRATION_PATTERNS),this.taskMetrics={metricPrefixSingular:"CodeBuildProject",metricPrefixPlural:"CodeBuildProjects",metricDimensions:{ProjectArn:this.props.project.projectArn}},this.taskPolicies=this.configurePolicyStatements()}configurePolicyStatements(){let policyStatements=[new iam.PolicyStatement({resources:[this.props.project.projectArn],actions:["codebuild:StartBuild","codebuild:StopBuild","codebuild:BatchGetBuilds","codebuild:BatchGetReports"]})];return this.integrationPattern===sfn.IntegrationPattern.RUN_JOB&&policyStatements.push(new iam.PolicyStatement({actions:["events:PutTargets","events:PutRule","events:DescribeRule"],resources:[cdk.Stack.of(this).formatArn({service:"events",resource:"rule/StepFunctionsGetEventForCodeBuildStartBuildRule"})]})),policyStatements}_renderTask(){return{Resource:(0,task_utils_1.integrationResourceArn)("codebuild","startBuild",this.integrationPattern),Parameters:sfn.FieldUtils.renderObject({ProjectName:this.props.project.projectName,EnvironmentVariablesOverride:this.props.environmentVariablesOverride?this.serializeEnvVariables(this.props.environmentVariablesOverride):void 0})}}serializeEnvVariables(environmentVariables){return Object.keys(environmentVariables).map(name=>({Name:name,Type:environmentVariables[name].type||codebuild.BuildEnvironmentVariableType.PLAINTEXT,Value:environmentVariables[name].value}))}}exports.CodeBuildStartBuild=CodeBuildStartBuild,_a=JSII_RTTI_SYMBOL_1,CodeBuildStartBuild[_a]={fqn:"aws-cdk-lib.aws_stepfunctions_tasks.CodeBuildStartBuild",version:"2.96.1"},CodeBuildStartBuild.SUPPORTED_INTEGRATION_PATTERNS=[sfn.IntegrationPattern.REQUEST_RESPONSE,sfn.IntegrationPattern.RUN_JOB];
