Skip to content

Commit

Permalink
Retain parent component hierarchy for php projects
Browse files Browse the repository at this point in the history
Signed-off-by: Prabhu Subramanian <[email protected]>
  • Loading branch information
prabhu committed Dec 9, 2024
1 parent c7cd429 commit 6225507
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 25 deletions.
37 changes: 24 additions & 13 deletions lib/cli/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4917,15 +4917,15 @@ export function createPHPBom(path, options) {
if (DEBUG_MODE) {
console.log(`Parsing ${f}`);
}
const rootRequires = [];
let rootRequires = [];
// Is there a composer.json to find the module parent component
if (existsSync(join(basePath, "composer.json"))) {
const retMap = parseComposerJson(join(basePath, "composer.json"));
moduleParent = retMap.moduleParent;
const rootRequires = retMap.rootRequires;
rootRequires = retMap.rootRequires;
// Track all the modules in a mono-repo
if (!Object.keys(parentComponent).length) {
parentComponent = moduleParent;
parentComponent = { ...moduleParent };
} else {
parentComponent.components = parentComponent.components || [];
parentComponent.components.push(moduleParent);
Expand All @@ -4935,24 +4935,17 @@ export function createPHPBom(path, options) {
if (retMap.pkgList?.length) {
pkgList = pkgList.concat(retMap.pkgList);
}
if (!moduleParent) {
moduleParent = createDefaultParentComponent(
basePath,
"composer",
options,
);
}
if (retMap.dependenciesList) {
// Complete the dependency tree by making parent component depend on the first level
const pdependencies = {
dependencies.splice(0, 0, {
ref: moduleParent["bom-ref"],
dependsOn: [
...new Set(retMap.rootList.map((p) => p["bom-ref"])),
].sort(),
};
});
dependencies = mergeDependencies(
dependencies,
[pdependencies, ...retMap.dependenciesList],
retMap.dependenciesList,
parentComponent,
);
}
Expand Down Expand Up @@ -5831,6 +5824,12 @@ export async function createMultiXBom(pathList, options) {
) {
parentSubComponents.push(bomData.parentComponent);
}
// Retain metadata.component.components
if (bomData.parentComponent?.components?.length) {
parentSubComponents = parentSubComponents.concat(
bomData.parentComponent.components,
);
}
}
}
if (hasAnyProjectType(["oci", "ruby"], options)) {
Expand All @@ -5853,6 +5852,12 @@ export async function createMultiXBom(pathList, options) {
) {
parentSubComponents.push(bomData.parentComponent);
}
// Retain metadata.component.components
if (bomData.parentComponent?.components?.length) {
parentSubComponents = parentSubComponents.concat(
bomData.parentComponent.components,
);
}
}
}
if (hasAnyProjectType(["oci", "csharp"], options)) {
Expand All @@ -5871,6 +5876,12 @@ export async function createMultiXBom(pathList, options) {
) {
parentSubComponents.push(bomData.parentComponent);
}
// Retain metadata.component.components
if (bomData.parentComponent?.components?.length) {
parentSubComponents = parentSubComponents.concat(
bomData.parentComponent.components,
);
}
}
}
if (hasAnyProjectType(["oci", "dart"], options)) {
Expand Down
19 changes: 9 additions & 10 deletions lib/helpers/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -8661,16 +8661,15 @@ export function parseComposerJson(composerJsonFile) {
expression: composerData.license,
});
}
moduleParent["bom-ref"] = decodeURIComponent(
new PackageURL(
"composer",
moduleParent.group,
moduleParent.name,
moduleParent.version,
null,
null,
).toString(),
);
moduleParent.purl = new PackageURL(
"composer",
moduleParent.group,
moduleParent.name,
moduleParent.version,
null,
null,
).toString();
moduleParent["bom-ref"] = decodeURIComponent(moduleParent.purl);
}
return { rootRequires, moduleParent };
}
Expand Down
2 changes: 1 addition & 1 deletion types/lib/cli/index.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion types/lib/helpers/utils.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6225507

Please sign in to comment.