UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

55 lines 8.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isHotswappableCodeBuildProjectChange = void 0; const common_1 = require("./common"); async function isHotswappableCodeBuildProjectChange(logicalId, change, evaluateCfnTemplate) { if (change.newValue.Type !== 'AWS::CodeBuild::Project') { return []; } const ret = []; const classifiedChanges = (0, common_1.classifyChanges)(change, ['Source', 'Environment', 'SourceVersion']); classifiedChanges.reportNonHotswappablePropertyChanges(ret); if (classifiedChanges.namesOfHotswappableProps.length > 0) { const updateProjectInput = { name: '', }; const projectName = await evaluateCfnTemplate.establishResourcePhysicalName(logicalId, change.newValue.Properties?.Name); ret.push({ hotswappable: true, resourceType: change.newValue.Type, propsChanged: classifiedChanges.namesOfHotswappableProps, service: 'codebuild', resourceNames: [`CodeBuild Project '${projectName}'`], apply: async (sdk) => { if (!projectName) { return; } updateProjectInput.name = projectName; for (const updatedPropName in change.propertyUpdates) { const updatedProp = change.propertyUpdates[updatedPropName]; switch (updatedPropName) { case 'Source': updateProjectInput.source = (0, common_1.transformObjectKeys)(await evaluateCfnTemplate.evaluateCfnExpression(updatedProp.newValue), convertSourceCloudformationKeyToSdkKey); break; case 'Environment': updateProjectInput.environment = await (0, common_1.transformObjectKeys)(await evaluateCfnTemplate.evaluateCfnExpression(updatedProp.newValue), common_1.lowerCaseFirstCharacter); break; case 'SourceVersion': updateProjectInput.sourceVersion = await evaluateCfnTemplate.evaluateCfnExpression(updatedProp.newValue); break; } } await sdk.codeBuild().updateProject(updateProjectInput).promise(); }, }); } return ret; } exports.isHotswappableCodeBuildProjectChange = isHotswappableCodeBuildProjectChange; function convertSourceCloudformationKeyToSdkKey(key) { if (key.toLowerCase() === 'buildspec') { return key.toLowerCase(); } return (0, common_1.lowerCaseFirstCharacter)(key); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1idWlsZC1wcm9qZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvZGUtYnVpbGQtcHJvamVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscUNBQTJJO0FBSXBJLEtBQUssVUFBVSxvQ0FBb0MsQ0FDeEQsU0FBaUIsRUFBRSxNQUFtQyxFQUFFLG1CQUFtRDtJQUUzRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLHlCQUF5QixFQUFFO1FBQ3RELE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFFRCxNQUFNLEdBQUcsR0FBd0IsRUFBRSxDQUFDO0lBRXBDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSx3QkFBZSxFQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM5RixpQkFBaUIsQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RCxJQUFJLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDekQsTUFBTSxrQkFBa0IsR0FBcUM7WUFDM0QsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekgsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNQLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLHdCQUF3QjtZQUN4RCxPQUFPLEVBQUUsV0FBVztZQUNwQixhQUFhLEVBQUUsQ0FBQyxzQkFBc0IsV0FBVyxHQUFHLENBQUM7WUFDckQsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFTLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDaEIsT0FBTztpQkFDUjtnQkFDRCxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO2dCQUV0QyxLQUFLLE1BQU0sZUFBZSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7b0JBQ3BELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzVELFFBQVEsZUFBZSxFQUFFO3dCQUN2QixLQUFLLFFBQVE7NEJBQ1gsa0JBQWtCLENBQUMsTUFBTSxHQUFHLElBQUEsNEJBQW1CLEVBQzdDLE1BQU0sbUJBQW1CLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUNyRSxzQ0FBc0MsQ0FDdkMsQ0FBQzs0QkFDRixNQUFNO3dCQUNSLEtBQUssYUFBYTs0QkFDaEIsa0JBQWtCLENBQUMsV0FBVyxHQUFHLE1BQU0sSUFBQSw0QkFBbUIsRUFDeEQsTUFBTSxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQ3JFLGdDQUF1QixDQUN4QixDQUFDOzRCQUNGLE1BQU07d0JBQ1IsS0FBSyxlQUFlOzRCQUNsQixrQkFBa0IsQ0FBQyxhQUFhLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3pHLE1BQU07cUJBQ1Q7aUJBQ0Y7Z0JBRUQsTUFBTSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEUsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBdkRELG9GQXVEQztBQUVELFNBQVMsc0NBQXNDLENBQUMsR0FBVztJQUN6RCxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUU7UUFDckMsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDMUI7SUFDRCxPQUFPLElBQUEsZ0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7IENoYW5nZUhvdHN3YXBSZXN1bHQsIGNsYXNzaWZ5Q2hhbmdlcywgSG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlLCBsb3dlckNhc2VGaXJzdENoYXJhY3RlciwgdHJhbnNmb3JtT2JqZWN0S2V5cyB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IElTREsgfSBmcm9tICcuLi9hd3MtYXV0aCc7XG5pbXBvcnQgeyBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUgfSBmcm9tICcuLi9ldmFsdWF0ZS1jbG91ZGZvcm1hdGlvbi10ZW1wbGF0ZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0hvdHN3YXBwYWJsZUNvZGVCdWlsZFByb2plY3RDaGFuZ2UoXG4gIGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IEhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuKTogUHJvbWlzZTxDaGFuZ2VIb3Rzd2FwUmVzdWx0PiB7XG4gIGlmIChjaGFuZ2UubmV3VmFsdWUuVHlwZSAhPT0gJ0FXUzo6Q29kZUJ1aWxkOjpQcm9qZWN0Jykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHJldDogQ2hhbmdlSG90c3dhcFJlc3VsdCA9IFtdO1xuXG4gIGNvbnN0IGNsYXNzaWZpZWRDaGFuZ2VzID0gY2xhc3NpZnlDaGFuZ2VzKGNoYW5nZSwgWydTb3VyY2UnLCAnRW52aXJvbm1lbnQnLCAnU291cmNlVmVyc2lvbiddKTtcbiAgY2xhc3NpZmllZENoYW5nZXMucmVwb3J0Tm9uSG90c3dhcHBhYmxlUHJvcGVydHlDaGFuZ2VzKHJldCk7XG4gIGlmIChjbGFzc2lmaWVkQ2hhbmdlcy5uYW1lc09mSG90c3dhcHBhYmxlUHJvcHMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHVwZGF0ZVByb2plY3RJbnB1dDogQVdTLkNvZGVCdWlsZC5VcGRhdGVQcm9qZWN0SW5wdXQgPSB7XG4gICAgICBuYW1lOiAnJyxcbiAgICB9O1xuICAgIGNvbnN0IHByb2plY3ROYW1lID0gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5lc3RhYmxpc2hSZXNvdXJjZVBoeXNpY2FsTmFtZShsb2dpY2FsSWQsIGNoYW5nZS5uZXdWYWx1ZS5Qcm9wZXJ0aWVzPy5OYW1lKTtcbiAgICByZXQucHVzaCh7XG4gICAgICBob3Rzd2FwcGFibGU6IHRydWUsXG4gICAgICByZXNvdXJjZVR5cGU6IGNoYW5nZS5uZXdWYWx1ZS5UeXBlLFxuICAgICAgcHJvcHNDaGFuZ2VkOiBjbGFzc2lmaWVkQ2hhbmdlcy5uYW1lc09mSG90c3dhcHBhYmxlUHJvcHMsXG4gICAgICBzZXJ2aWNlOiAnY29kZWJ1aWxkJyxcbiAgICAgIHJlc291cmNlTmFtZXM6IFtgQ29kZUJ1aWxkIFByb2plY3QgJyR7cHJvamVjdE5hbWV9J2BdLFxuICAgICAgYXBwbHk6IGFzeW5jIChzZGs6IElTREspID0+IHtcbiAgICAgICAgaWYgKCFwcm9qZWN0TmFtZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVQcm9qZWN0SW5wdXQubmFtZSA9IHByb2plY3ROYW1lO1xuXG4gICAgICAgIGZvciAoY29uc3QgdXBkYXRlZFByb3BOYW1lIGluIGNoYW5nZS5wcm9wZXJ0eVVwZGF0ZXMpIHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkUHJvcCA9IGNoYW5nZS5wcm9wZXJ0eVVwZGF0ZXNbdXBkYXRlZFByb3BOYW1lXTtcbiAgICAgICAgICBzd2l0Y2ggKHVwZGF0ZWRQcm9wTmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnU291cmNlJzpcbiAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdElucHV0LnNvdXJjZSA9IHRyYW5zZm9ybU9iamVjdEtleXMoXG4gICAgICAgICAgICAgICAgYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24odXBkYXRlZFByb3AubmV3VmFsdWUpLFxuICAgICAgICAgICAgICAgIGNvbnZlcnRTb3VyY2VDbG91ZGZvcm1hdGlvbktleVRvU2RrS2V5LFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Vudmlyb25tZW50JzpcbiAgICAgICAgICAgICAgdXBkYXRlUHJvamVjdElucHV0LmVudmlyb25tZW50ID0gYXdhaXQgdHJhbnNmb3JtT2JqZWN0S2V5cyhcbiAgICAgICAgICAgICAgICBhd2FpdCBldmFsdWF0ZUNmblRlbXBsYXRlLmV2YWx1YXRlQ2ZuRXhwcmVzc2lvbih1cGRhdGVkUHJvcC5uZXdWYWx1ZSksXG4gICAgICAgICAgICAgICAgbG93ZXJDYXNlRmlyc3RDaGFyYWN0ZXIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU291cmNlVmVyc2lvbic6XG4gICAgICAgICAgICAgIHVwZGF0ZVByb2plY3RJbnB1dC5zb3VyY2VWZXJzaW9uID0gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24odXBkYXRlZFByb3AubmV3VmFsdWUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBzZGsuY29kZUJ1aWxkKCkudXBkYXRlUHJvamVjdCh1cGRhdGVQcm9qZWN0SW5wdXQpLnByb21pc2UoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0U291cmNlQ2xvdWRmb3JtYXRpb25LZXlUb1Nka0tleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2J1aWxkc3BlYycpIHtcbiAgICByZXR1cm4ga2V5LnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIGxvd2VyQ2FzZUZpcnN0Q2hhcmFjdGVyKGtleSk7XG59XG4iXX0=