@aws-cdk/cloudformation-diff
Version:
Utilities to diff CDK stacks against CloudFormation templates
44 lines • 7.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatEnvironmentSectionHeader = formatEnvironmentSectionHeader;
exports.formatTypedMappings = formatTypedMappings;
exports.formatAmbiguousMappings = formatAmbiguousMappings;
const chalk = require("chalk");
const format_1 = require("./format");
const format_table_1 = require("./format-table");
function formatEnvironmentSectionHeader(stream, env) {
const formatter = new format_1.Formatter(stream, {});
formatter.printSectionHeader(`${env}\n`);
}
function formatTypedMappings(stream, mappings) {
if (mappings.length > 0) {
const header = [['Resource Type', 'Old Construct Path', 'New Construct Path']];
const rows = mappings.map((m) => [m.type, m.sourcePath, m.destinationPath]);
const formatter = new format_1.Formatter(stream, {});
formatter.print('The following resources were moved or renamed:');
formatter.print(chalk.green((0, format_table_1.formatTable)(header.concat(rows), undefined)));
formatter.print(' ');
}
}
function formatAmbiguousMappings(stream, pairs) {
const tables = pairs.map(renderTable);
const formatter = new format_1.Formatter(stream, {});
formatter.print('Detected ambiguities:');
formatter.print(tables.join('\n\n'));
formatter.print(' ');
formatter.print(chalk.yellow('Please provide an override file to resolve these ambiguous mappings.'));
formatter.print(' ');
function renderTable([removed, added]) {
return (0, format_table_1.formatTable)([['', 'Resource'], renderRemoval(removed), renderAddition(added)], undefined);
}
function renderRemoval(locations) {
return [chalk.red('-'), chalk.red(renderLocations(locations))];
}
function renderAddition(locations) {
return [chalk.green('+'), chalk.green(renderLocations(locations))];
}
function renderLocations(locs) {
return locs.join('\n');
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYXBwaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLHdFQUdDO0FBRUQsa0RBVUM7QUFFRCwwREE0QkM7QUF2REQsK0JBQStCO0FBQy9CLHFDQUFxQztBQUNyQyxpREFBNkM7QUFRN0MsU0FBZ0IsOEJBQThCLENBQUMsTUFBNkIsRUFBRSxHQUFXO0lBQ3ZGLE1BQU0sU0FBUyxHQUFHLElBQUksa0JBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsTUFBNkIsRUFBRSxRQUF3QjtJQUN6RixJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxrQkFBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1QyxTQUFTLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFDbEUsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUEsMEJBQVcsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQ3JDLE1BQTZCLEVBQzdCLEtBQTZCO0lBRTdCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxrQkFBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU1QyxTQUFTLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDekMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsc0VBQXNFLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckIsU0FBUyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUF1QjtRQUN6RCxPQUFPLElBQUEsMEJBQVcsRUFBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQsU0FBUyxhQUFhLENBQUMsU0FBbUI7UUFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxTQUFTLGNBQWMsQ0FBQyxTQUFtQjtRQUN6QyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFNBQVMsZUFBZSxDQUFDLElBQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXQnO1xuaW1wb3J0IHsgZm9ybWF0VGFibGUgfSBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZWRNYXBwaW5nIHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSBzb3VyY2VQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uUGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RW52aXJvbm1lbnRTZWN0aW9uSGVhZGVyKHN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtLCBlbnY6IHN0cmluZykge1xuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyKHN0cmVhbSwge30pO1xuICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uSGVhZGVyKGAke2Vudn1cXG5gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFR5cGVkTWFwcGluZ3Moc3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0sIG1hcHBpbmdzOiBUeXBlZE1hcHBpbmdbXSkge1xuICBpZiAobWFwcGluZ3MubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGhlYWRlciA9IFtbJ1Jlc291cmNlIFR5cGUnLCAnT2xkIENvbnN0cnVjdCBQYXRoJywgJ05ldyBDb25zdHJ1Y3QgUGF0aCddXTtcbiAgICBjb25zdCByb3dzID0gbWFwcGluZ3MubWFwKChtKSA9PiBbbS50eXBlLCBtLnNvdXJjZVBhdGgsIG0uZGVzdGluYXRpb25QYXRoXSk7XG4gICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEZvcm1hdHRlcihzdHJlYW0sIHt9KTtcblxuICAgIGZvcm1hdHRlci5wcmludCgnVGhlIGZvbGxvd2luZyByZXNvdXJjZXMgd2VyZSBtb3ZlZCBvciByZW5hbWVkOicpO1xuICAgIGZvcm1hdHRlci5wcmludChjaGFsay5ncmVlbihmb3JtYXRUYWJsZShoZWFkZXIuY29uY2F0KHJvd3MpLCB1bmRlZmluZWQpKSk7XG4gICAgZm9ybWF0dGVyLnByaW50KCcgJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEFtYmlndW91c01hcHBpbmdzKFxuICBzdHJlYW06IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSxcbiAgcGFpcnM6IFtzdHJpbmdbXSwgc3RyaW5nW11dW10sXG4pIHtcbiAgY29uc3QgdGFibGVzID0gcGFpcnMubWFwKHJlbmRlclRhYmxlKTtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEZvcm1hdHRlcihzdHJlYW0sIHt9KTtcblxuICBmb3JtYXR0ZXIucHJpbnQoJ0RldGVjdGVkIGFtYmlndWl0aWVzOicpO1xuICBmb3JtYXR0ZXIucHJpbnQodGFibGVzLmpvaW4oJ1xcblxcbicpKTtcbiAgZm9ybWF0dGVyLnByaW50KCcgJyk7XG4gIGZvcm1hdHRlci5wcmludChjaGFsay55ZWxsb3coJ1BsZWFzZSBwcm92aWRlIGFuIG92ZXJyaWRlIGZpbGUgdG8gcmVzb2x2ZSB0aGVzZSBhbWJpZ3VvdXMgbWFwcGluZ3MuJykpO1xuICBmb3JtYXR0ZXIucHJpbnQoJyAnKTtcblxuICBmdW5jdGlvbiByZW5kZXJUYWJsZShbcmVtb3ZlZCwgYWRkZWRdOiBbc3RyaW5nW10sIHN0cmluZ1tdXSkge1xuICAgIHJldHVybiBmb3JtYXRUYWJsZShbWycnLCAnUmVzb3VyY2UnXSwgcmVuZGVyUmVtb3ZhbChyZW1vdmVkKSwgcmVuZGVyQWRkaXRpb24oYWRkZWQpXSwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlclJlbW92YWwobG9jYXRpb25zOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBbY2hhbGsucmVkKCctJyksIGNoYWxrLnJlZChyZW5kZXJMb2NhdGlvbnMobG9jYXRpb25zKSldO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVuZGVyQWRkaXRpb24obG9jYXRpb25zOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBbY2hhbGsuZ3JlZW4oJysnKSwgY2hhbGsuZ3JlZW4ocmVuZGVyTG9jYXRpb25zKGxvY2F0aW9ucykpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlckxvY2F0aW9ucyhsb2NzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBsb2NzLmpvaW4oJ1xcbicpO1xuICB9XG59XG4iXX0=