aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
58 lines • 8.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.listStacks = listStacks;
require("@jsii/check-node/run");
const cloud_assembly_1 = require("./api/cxapp/cloud-assembly");
/**
* List Stacks
*
* @param toolkit cdk toolkit
* @param options list stacks options
* @returns StackDetails[]
*/
async function listStacks(toolkit, options) {
const assembly = await toolkit.assembly();
const stacks = await assembly.selectStacks({
patterns: options.selectors,
}, {
extend: cloud_assembly_1.ExtendedStackSelection.Upstream,
defaultBehavior: cloud_assembly_1.DefaultSelection.AllStacks,
});
function calculateStackDependencies(collectionOfStacks) {
const allData = [];
for (const stack of collectionOfStacks.stackArtifacts) {
const data = {
id: stack.displayName ?? stack.id,
name: stack.stackName,
environment: stack.environment,
dependencies: [],
};
for (const dependencyId of stack.dependencies.map(x => x.id)) {
if (dependencyId.includes('.assets')) {
continue;
}
const depStack = assembly.stackById(dependencyId);
if (depStack.stackArtifacts[0].dependencies.length > 0 &&
depStack.stackArtifacts[0].dependencies.filter((dep) => !(dep.id).includes('.assets')).length > 0) {
const stackWithDeps = calculateStackDependencies(depStack);
for (const stackDetail of stackWithDeps) {
data.dependencies.push({
id: stackDetail.id,
dependencies: stackDetail.dependencies,
});
}
}
else {
data.dependencies.push({
id: depStack.stackArtifacts[0].displayName ?? depStack.stackArtifacts[0].id,
dependencies: [],
});
}
}
allData.push(data);
}
return allData;
}
return calculateStackDependencies(stacks);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1zdGFja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsaXN0LXN0YWNrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJDQSxnQ0FzREM7QUFoR0QsZ0NBQThCO0FBRTlCLCtEQUF1RztBQWlDdkc7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFtQixFQUFFLE9BQTBCO0lBQzlFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRTFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLFlBQVksQ0FBQztRQUN6QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDNUIsRUFBRTtRQUNELE1BQU0sRUFBRSx1Q0FBc0IsQ0FBQyxRQUFRO1FBQ3ZDLGVBQWUsRUFBRSxpQ0FBZ0IsQ0FBQyxTQUFTO0tBQzVDLENBQUMsQ0FBQztJQUVILFNBQVMsMEJBQTBCLENBQUMsa0JBQW1DO1FBQ3JFLE1BQU0sT0FBTyxHQUFtQixFQUFFLENBQUM7UUFFbkMsS0FBSyxNQUFNLEtBQUssSUFBSSxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0RCxNQUFNLElBQUksR0FBaUI7Z0JBQ3pCLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsWUFBWSxFQUFFLEVBQUU7YUFDakIsQ0FBQztZQUVGLEtBQUssTUFBTSxZQUFZLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQ3JDLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUVsRCxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUNwRCxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUVwRyxNQUFNLGFBQWEsR0FBRywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFM0QsS0FBSyxNQUFNLFdBQVcsSUFBSSxhQUFhLEVBQUUsQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7NEJBQ3JCLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRTs0QkFDbEIsWUFBWSxFQUFFLFdBQVcsQ0FBQyxZQUFZO3lCQUN2QyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEVBQUUsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQzNFLFlBQVksRUFBRSxFQUFFO3FCQUNqQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgJ0Bqc2lpL2NoZWNrLW5vZGUvcnVuJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7IERlZmF1bHRTZWxlY3Rpb24sIEV4dGVuZGVkU3RhY2tTZWxlY3Rpb24sIFN0YWNrQ29sbGVjdGlvbiB9IGZyb20gJy4vYXBpL2N4YXBwL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB7IENka1Rvb2xraXQgfSBmcm9tICcuL2NsaS9jZGstdG9vbGtpdCc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgTGlzdCBTdGFja3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0U3RhY2tzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTdGFja3MgdG8gbGlzdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFsbCBzdGFja3MgYXJlIGxpc3RlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VsZWN0b3JzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUeXBlIHRvIHN0b3JlIHN0YWNrIGRlcGVuZGVuY2llcyByZWN1cnNpdmVseVxuICovXG5leHBvcnQgdHlwZSBEZXBlbmRlbmN5RGV0YWlscyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBEZXBlbmRlbmN5RGV0YWlsc1tdO1xufTtcblxuLyoqXG4gKiBUeXBlIHRvIHN0b3JlIHN0YWNrIGFuZCB0aGVpciBkZXBlbmRlbmNpZXNcbiAqL1xuZXhwb3J0IHR5cGUgU3RhY2tEZXRhaWxzID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBFbnZpcm9ubWVudDtcbiAgZGVwZW5kZW5jaWVzOiBEZXBlbmRlbmN5RGV0YWlsc1tdO1xufTtcblxuLyoqXG4gKiBMaXN0IFN0YWNrc1xuICpcbiAqIEBwYXJhbSB0b29sa2l0IGNkayB0b29sa2l0XG4gKiBAcGFyYW0gb3B0aW9ucyBsaXN0IHN0YWNrcyBvcHRpb25zXG4gKiBAcmV0dXJucyBTdGFja0RldGFpbHNbXVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFN0YWNrcyh0b29sa2l0OiBDZGtUb29sa2l0LCBvcHRpb25zOiBMaXN0U3RhY2tzT3B0aW9ucyk6IFByb21pc2U8U3RhY2tEZXRhaWxzW10+IHtcbiAgY29uc3QgYXNzZW1ibHkgPSBhd2FpdCB0b29sa2l0LmFzc2VtYmx5KCk7XG5cbiAgY29uc3Qgc3RhY2tzID0gYXdhaXQgYXNzZW1ibHkuc2VsZWN0U3RhY2tzKHtcbiAgICBwYXR0ZXJuczogb3B0aW9ucy5zZWxlY3RvcnMsXG4gIH0sIHtcbiAgICBleHRlbmQ6IEV4dGVuZGVkU3RhY2tTZWxlY3Rpb24uVXBzdHJlYW0sXG4gICAgZGVmYXVsdEJlaGF2aW9yOiBEZWZhdWx0U2VsZWN0aW9uLkFsbFN0YWNrcyxcbiAgfSk7XG5cbiAgZnVuY3Rpb24gY2FsY3VsYXRlU3RhY2tEZXBlbmRlbmNpZXMoY29sbGVjdGlvbk9mU3RhY2tzOiBTdGFja0NvbGxlY3Rpb24pOiBTdGFja0RldGFpbHNbXSB7XG4gICAgY29uc3QgYWxsRGF0YTogU3RhY2tEZXRhaWxzW10gPSBbXTtcblxuICAgIGZvciAoY29uc3Qgc3RhY2sgb2YgY29sbGVjdGlvbk9mU3RhY2tzLnN0YWNrQXJ0aWZhY3RzKSB7XG4gICAgICBjb25zdCBkYXRhOiBTdGFja0RldGFpbHMgPSB7XG4gICAgICAgIGlkOiBzdGFjay5kaXNwbGF5TmFtZSA/PyBzdGFjay5pZCxcbiAgICAgICAgbmFtZTogc3RhY2suc3RhY2tOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudDogc3RhY2suZW52aXJvbm1lbnQsXG4gICAgICAgIGRlcGVuZGVuY2llczogW10sXG4gICAgICB9O1xuXG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3lJZCBvZiBzdGFjay5kZXBlbmRlbmNpZXMubWFwKHggPT4geC5pZCkpIHtcbiAgICAgICAgaWYgKGRlcGVuZGVuY3lJZC5pbmNsdWRlcygnLmFzc2V0cycpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZXBTdGFjayA9IGFzc2VtYmx5LnN0YWNrQnlJZChkZXBlbmRlbmN5SWQpO1xuXG4gICAgICAgIGlmIChkZXBTdGFjay5zdGFja0FydGlmYWN0c1swXS5kZXBlbmRlbmNpZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGRlcFN0YWNrLnN0YWNrQXJ0aWZhY3RzWzBdLmRlcGVuZGVuY2llcy5maWx0ZXIoKGRlcCkgPT4gIShkZXAuaWQpLmluY2x1ZGVzKCcuYXNzZXRzJykpLmxlbmd0aCA+IDApIHtcblxuICAgICAgICAgIGNvbnN0IHN0YWNrV2l0aERlcHMgPSBjYWxjdWxhdGVTdGFja0RlcGVuZGVuY2llcyhkZXBTdGFjayk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHN0YWNrRGV0YWlsIG9mIHN0YWNrV2l0aERlcHMpIHtcbiAgICAgICAgICAgIGRhdGEuZGVwZW5kZW5jaWVzLnB1c2goe1xuICAgICAgICAgICAgICBpZDogc3RhY2tEZXRhaWwuaWQsXG4gICAgICAgICAgICAgIGRlcGVuZGVuY2llczogc3RhY2tEZXRhaWwuZGVwZW5kZW5jaWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGEuZGVwZW5kZW5jaWVzLnB1c2goe1xuICAgICAgICAgICAgaWQ6IGRlcFN0YWNrLnN0YWNrQXJ0aWZhY3RzWzBdLmRpc3BsYXlOYW1lID8/IGRlcFN0YWNrLnN0YWNrQXJ0aWZhY3RzWzBdLmlkLFxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhbGxEYXRhLnB1c2goZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbERhdGE7XG4gIH1cblxuICByZXR1cm4gY2FsY3VsYXRlU3RhY2tEZXBlbmRlbmNpZXMoc3RhY2tzKTtcbn1cbiJdfQ==