in packages/aws-c2a/lib/cloud-assembly.ts [381:407]
function includeUpstreamStacks(
selectedStacks: Map<string, cxapi.CloudFormationStackArtifact>,
allStacks: Map<string, cxapi.CloudFormationStackArtifact>,
): void {
const added = new Array<string>();
let madeProgress = true;
while (madeProgress) {
madeProgress = false;
for (const stack of selectedStacks.values()) {
// Select an additional stack if it's not selected yet and a dependency of a selected stack (and exists, obviously)
for (const dependencyId of stack.dependencies.map(x => x.manifest.displayName ?? x.id)) {
if (!selectedStacks.has(dependencyId) && allStacks.has(dependencyId)) {
added.push(dependencyId);
// We know allStacks has dependencyId from the above conditional
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
selectedStacks.set(dependencyId, allStacks.get(dependencyId)!);
madeProgress = true;
}
}
}
}
if (added.length > 0) {
print(`Including dependency stacks: ${added.join(', ')}`);
}
}