@cyclonedx/cdxgen 10.10.0 → 10.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cli/index.js
CHANGED
|
@@ -54,7 +54,6 @@ import {
|
|
|
54
54
|
determineSbtVersion,
|
|
55
55
|
dirNameStr,
|
|
56
56
|
encodeForPurl,
|
|
57
|
-
executeGradleProperties,
|
|
58
57
|
executeParallelGradleProperties,
|
|
59
58
|
extractJarArchive,
|
|
60
59
|
frameworksList,
|
|
@@ -1316,6 +1315,7 @@ export async function createJavaBom(path, options) {
|
|
|
1316
1315
|
mvnArgs = mvnArgs.concat("-DschemaVersion=1.4");
|
|
1317
1316
|
}
|
|
1318
1317
|
const firstPom = pomFiles.length ? pomFiles[0] : undefined;
|
|
1318
|
+
let mavenCmd = getMavenCommand(path, path);
|
|
1319
1319
|
for (const f of pomFiles) {
|
|
1320
1320
|
const basePath = dirname(f);
|
|
1321
1321
|
const settingsXml = join(basePath, "settings.xml");
|
|
@@ -1324,7 +1324,9 @@ export async function createJavaBom(path, options) {
|
|
|
1324
1324
|
`maven settings.xml found in ${basePath}. Please set the MVN_ARGS environment variable based on the full mvn build command used for this project.\nExample: MVN_ARGS='--settings ${settingsXml}'`,
|
|
1325
1325
|
);
|
|
1326
1326
|
}
|
|
1327
|
-
|
|
1327
|
+
if (mavenCmd?.endsWith("mvn")) {
|
|
1328
|
+
mavenCmd = getMavenCommand(basePath, path);
|
|
1329
|
+
}
|
|
1328
1330
|
// Should we attempt to resolve class names
|
|
1329
1331
|
if (options.resolveClass || options.deep) {
|
|
1330
1332
|
const tmpjarNSMapping = await collectMvnDependencies(
|
|
@@ -1635,16 +1637,50 @@ export async function createJavaBom(path, options) {
|
|
|
1635
1637
|
gradleFiles?.length &&
|
|
1636
1638
|
isPackageManagerAllowed("gradle", ["maven", "bazel", "sbt"], options)
|
|
1637
1639
|
) {
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
if (
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
retMap.metadata,
|
|
1640
|
+
let rootProjects = [null];
|
|
1641
|
+
let allProjectsStr = [];
|
|
1642
|
+
let rootGradleModule = {};
|
|
1643
|
+
if (process.env.GRADLE_INCLUDED_BUILDS) {
|
|
1644
|
+
rootProjects = rootProjects.concat(
|
|
1645
|
+
process.env.GRADLE_INCLUDED_BUILDS.split(","),
|
|
1645
1646
|
);
|
|
1646
|
-
gradleModules.set(rootProject, parentComponent);
|
|
1647
1647
|
}
|
|
1648
|
+
const parallelPropTaskOut = executeParallelGradleProperties(
|
|
1649
|
+
gradleRootPath,
|
|
1650
|
+
rootProjects,
|
|
1651
|
+
);
|
|
1652
|
+
const splitPropTaskOut = splitOutputByGradleProjects(parallelPropTaskOut, [
|
|
1653
|
+
"properties",
|
|
1654
|
+
]);
|
|
1655
|
+
|
|
1656
|
+
for (const [key, propTaskOut] of splitPropTaskOut.entries()) {
|
|
1657
|
+
const retMap = parseGradleProperties(propTaskOut);
|
|
1658
|
+
const rootProject = retMap.rootProject;
|
|
1659
|
+
if (rootProject) {
|
|
1660
|
+
const rootComponent = await buildObjectForGradleModule(
|
|
1661
|
+
rootProject,
|
|
1662
|
+
retMap.metadata,
|
|
1663
|
+
);
|
|
1664
|
+
gradleModules.set(key, rootComponent);
|
|
1665
|
+
if (!rootProjects.includes(key)) {
|
|
1666
|
+
if (rootGradleModule.name) {
|
|
1667
|
+
console.error(
|
|
1668
|
+
"Found more than 1 root-components! Maybe you made a mistake in the name of an included-build module?",
|
|
1669
|
+
);
|
|
1670
|
+
throw new Error(
|
|
1671
|
+
"Found more than 1 root-components! Maybe you made a mistake in the name of an included-build module?",
|
|
1672
|
+
);
|
|
1673
|
+
}
|
|
1674
|
+
rootGradleModule = rootComponent;
|
|
1675
|
+
} else if (!allProjectsAddedPurls.includes(rootComponent["purl"])) {
|
|
1676
|
+
allProjects.push(rootComponent);
|
|
1677
|
+
rootDependsOn.push(rootComponent["bom-ref"]);
|
|
1678
|
+
allProjectsAddedPurls.push(rootComponent["purl"]);
|
|
1679
|
+
}
|
|
1680
|
+
allProjectsStr = allProjectsStr.concat(retMap.projects);
|
|
1681
|
+
}
|
|
1682
|
+
}
|
|
1683
|
+
parentComponent = rootGradleModule;
|
|
1648
1684
|
// Get the sub-project properties and set the root dependencies
|
|
1649
1685
|
if (allProjectsStr?.length) {
|
|
1650
1686
|
const parallelPropTaskOut = executeParallelGradleProperties(
|
|
@@ -1741,7 +1777,7 @@ export async function createJavaBom(path, options) {
|
|
|
1741
1777
|
const perProjectOutput = splitOutputByGradleProjects(cmdOutput, [
|
|
1742
1778
|
gradleDepTask,
|
|
1743
1779
|
]);
|
|
1744
|
-
for (const
|
|
1780
|
+
for (const key of gradleModules.keys()) {
|
|
1745
1781
|
const parsedList = await parseGradleDep(
|
|
1746
1782
|
perProjectOutput.has(key) ? perProjectOutput.get(key) : "",
|
|
1747
1783
|
key,
|
|
@@ -1804,7 +1840,7 @@ export async function createJavaBom(path, options) {
|
|
|
1804
1840
|
// NOTE: This can match BUILD files used by perl, so could lead to errors in some projects
|
|
1805
1841
|
const bazelFiles = getAllFiles(
|
|
1806
1842
|
path,
|
|
1807
|
-
`${options.multiProject ? "**/" : ""}
|
|
1843
|
+
`${options.multiProject ? "**/" : ""}{WORKSPACE{,.bazel},MODULE.bazel}`,
|
|
1808
1844
|
options,
|
|
1809
1845
|
);
|
|
1810
1846
|
if (
|
|
@@ -5660,7 +5696,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5660
5696
|
}
|
|
5661
5697
|
if (hasAnyProjectType(["oci", "rust"], options)) {
|
|
5662
5698
|
bomData = await createRustBom(path, options);
|
|
5663
|
-
if (bomData?.bomJson?.components) {
|
|
5699
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5664
5700
|
if (DEBUG_MODE) {
|
|
5665
5701
|
console.log(
|
|
5666
5702
|
`Found ${bomData.bomJson.components.length} rust packages at ${path}`,
|
|
@@ -5684,7 +5720,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5684
5720
|
}
|
|
5685
5721
|
if (hasAnyProjectType(["oci", "php"], options)) {
|
|
5686
5722
|
bomData = createPHPBom(path, options);
|
|
5687
|
-
if (bomData?.bomJson?.components) {
|
|
5723
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5688
5724
|
if (DEBUG_MODE) {
|
|
5689
5725
|
console.log(
|
|
5690
5726
|
`Found ${bomData.bomJson.components.length} php packages at ${path}`,
|
|
@@ -5702,7 +5738,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5702
5738
|
}
|
|
5703
5739
|
if (hasAnyProjectType(["oci", "ruby"], options)) {
|
|
5704
5740
|
bomData = await createRubyBom(path, options);
|
|
5705
|
-
if (bomData?.bomJson?.components) {
|
|
5741
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5706
5742
|
if (DEBUG_MODE) {
|
|
5707
5743
|
console.log(
|
|
5708
5744
|
`Found ${bomData.bomJson.components.length} ruby packages at ${path}`,
|
|
@@ -5742,7 +5778,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5742
5778
|
}
|
|
5743
5779
|
if (hasAnyProjectType(["oci", "dart"], options)) {
|
|
5744
5780
|
bomData = await createDartBom(path, options);
|
|
5745
|
-
if (bomData?.bomJson?.components) {
|
|
5781
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5746
5782
|
if (DEBUG_MODE) {
|
|
5747
5783
|
console.log(
|
|
5748
5784
|
`Found ${bomData.bomJson.components.length} pub packages at ${path}`,
|
|
@@ -5760,7 +5796,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5760
5796
|
}
|
|
5761
5797
|
if (hasAnyProjectType(["oci", "haskell"], options)) {
|
|
5762
5798
|
bomData = createHaskellBom(path, options);
|
|
5763
|
-
if (bomData?.bomJson?.components) {
|
|
5799
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5764
5800
|
if (DEBUG_MODE) {
|
|
5765
5801
|
console.log(
|
|
5766
5802
|
`Found ${bomData.bomJson.components.length} hackage packages at ${path}`,
|
|
@@ -5778,7 +5814,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5778
5814
|
}
|
|
5779
5815
|
if (hasAnyProjectType(["oci", "elixir"], options)) {
|
|
5780
5816
|
bomData = createElixirBom(path, options);
|
|
5781
|
-
if (bomData?.bomJson?.components) {
|
|
5817
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5782
5818
|
if (DEBUG_MODE) {
|
|
5783
5819
|
console.log(
|
|
5784
5820
|
`Found ${bomData.bomJson.components.length} mix packages at ${path}`,
|
|
@@ -5796,7 +5832,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5796
5832
|
}
|
|
5797
5833
|
if (hasAnyProjectType(["oci", "c"], options)) {
|
|
5798
5834
|
bomData = createCppBom(path, options);
|
|
5799
|
-
if (bomData?.bomJson?.components) {
|
|
5835
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5800
5836
|
if (DEBUG_MODE) {
|
|
5801
5837
|
console.log(
|
|
5802
5838
|
`Found ${bomData.bomJson.components.length} cpp packages at ${path}`,
|
|
@@ -5814,7 +5850,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5814
5850
|
}
|
|
5815
5851
|
if (hasAnyProjectType(["oci", "clojure"], options)) {
|
|
5816
5852
|
bomData = createClojureBom(path, options);
|
|
5817
|
-
if (bomData?.bomJson?.components) {
|
|
5853
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5818
5854
|
if (DEBUG_MODE) {
|
|
5819
5855
|
console.log(
|
|
5820
5856
|
`Found ${bomData.bomJson.components.length} clojure packages at ${path}`,
|
|
@@ -5832,7 +5868,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5832
5868
|
}
|
|
5833
5869
|
if (hasAnyProjectType(["oci", "github"], options)) {
|
|
5834
5870
|
bomData = createGitHubBom(path, options);
|
|
5835
|
-
if (bomData?.bomJson?.components) {
|
|
5871
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5836
5872
|
if (DEBUG_MODE) {
|
|
5837
5873
|
console.log(
|
|
5838
5874
|
`Found ${bomData.bomJson.components.length} GitHub action packages at ${path}`,
|
|
@@ -5850,7 +5886,7 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5850
5886
|
}
|
|
5851
5887
|
if (hasAnyProjectType(["oci", "cloudbuild"], options)) {
|
|
5852
5888
|
bomData = createCloudBuildBom(path, options);
|
|
5853
|
-
if (bomData?.bomJson?.components) {
|
|
5889
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5854
5890
|
if (DEBUG_MODE) {
|
|
5855
5891
|
console.log(
|
|
5856
5892
|
`Found ${bomData.bomJson.components.length} CloudBuild configuration at ${path}`,
|
|
@@ -5884,22 +5920,22 @@ export async function createMultiXBom(pathList, options) {
|
|
|
5884
5920
|
}
|
|
5885
5921
|
}
|
|
5886
5922
|
}
|
|
5887
|
-
|
|
5888
|
-
|
|
5889
|
-
|
|
5890
|
-
|
|
5891
|
-
|
|
5892
|
-
|
|
5893
|
-
|
|
5894
|
-
|
|
5895
|
-
|
|
5896
|
-
|
|
5897
|
-
|
|
5898
|
-
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
5902
|
-
|
|
5923
|
+
if (hasAnyProjectType(["oci", "jar", "war", "ear"], options)) {
|
|
5924
|
+
bomData = await createJarBom(path, options);
|
|
5925
|
+
if (bomData?.bomJson?.components?.length) {
|
|
5926
|
+
if (DEBUG_MODE) {
|
|
5927
|
+
console.log(
|
|
5928
|
+
`Found ${bomData.bomJson.components.length} jar packages at ${path}`,
|
|
5929
|
+
);
|
|
5930
|
+
}
|
|
5931
|
+
components = components.concat(bomData.bomJson.components);
|
|
5932
|
+
dependencies = dependencies.concat(bomData.bomJson.dependencies);
|
|
5933
|
+
if (
|
|
5934
|
+
bomData.parentComponent &&
|
|
5935
|
+
Object.keys(bomData.parentComponent).length
|
|
5936
|
+
) {
|
|
5937
|
+
parentSubComponents.push(bomData.parentComponent);
|
|
5938
|
+
}
|
|
5903
5939
|
}
|
|
5904
5940
|
}
|
|
5905
5941
|
// Collect any crypto keys
|
package/lib/helpers/utils.js
CHANGED
|
@@ -398,6 +398,23 @@ export function hasAnyProjectType(projectTypes, options, defaultStatus = true) {
|
|
|
398
398
|
) {
|
|
399
399
|
return defaultStatus;
|
|
400
400
|
}
|
|
401
|
+
// If only exclude type is specified, then do not allow oci type
|
|
402
|
+
if (
|
|
403
|
+
(projectTypes?.length === 1 || !defaultStatus) &&
|
|
404
|
+
!options.projectType?.length &&
|
|
405
|
+
options.excludeType?.length
|
|
406
|
+
) {
|
|
407
|
+
const ret =
|
|
408
|
+
!projectTypes.includes("oci") &&
|
|
409
|
+
!projectTypes.includes("oci-dir") &&
|
|
410
|
+
!projectTypes.includes("os") &&
|
|
411
|
+
!projectTypes.includes("docker") &&
|
|
412
|
+
!options.excludeType.includes("oci");
|
|
413
|
+
if (ret && DEBUG_MODE) {
|
|
414
|
+
console.log("Project types", projectTypes);
|
|
415
|
+
}
|
|
416
|
+
return ret;
|
|
417
|
+
}
|
|
401
418
|
const allProjectTypes = [...projectTypes];
|
|
402
419
|
// Convert the project types into base types
|
|
403
420
|
const baseProjectTypes = [];
|
|
@@ -439,6 +456,9 @@ export function hasAnyProjectType(projectTypes, options, defaultStatus = true) {
|
|
|
439
456
|
.length
|
|
440
457
|
);
|
|
441
458
|
}
|
|
459
|
+
if (shouldInclude && DEBUG_MODE) {
|
|
460
|
+
console.log("Project types", projectTypes);
|
|
461
|
+
}
|
|
442
462
|
return shouldInclude;
|
|
443
463
|
}
|
|
444
464
|
|
|
@@ -2433,6 +2453,7 @@ export function parseMavenTree(rawOutput, pomFile) {
|
|
|
2433
2453
|
const tmpA = rawOutput.split("\n");
|
|
2434
2454
|
let last_level = 0;
|
|
2435
2455
|
let last_purl = "";
|
|
2456
|
+
let first_purl = undefined;
|
|
2436
2457
|
const stack = [];
|
|
2437
2458
|
tmpA.forEach((l) => {
|
|
2438
2459
|
l = l.replace("\r", "");
|
|
@@ -2485,6 +2506,9 @@ export function parseMavenTree(rawOutput, pomFile) {
|
|
|
2485
2506
|
null,
|
|
2486
2507
|
).toString();
|
|
2487
2508
|
const key = purlString;
|
|
2509
|
+
if (!first_purl) {
|
|
2510
|
+
first_purl = purlString;
|
|
2511
|
+
}
|
|
2488
2512
|
if (!keys_cache[key]) {
|
|
2489
2513
|
keys_cache[key] = key;
|
|
2490
2514
|
const properties = [];
|
|
@@ -2540,7 +2564,9 @@ export function parseMavenTree(rawOutput, pomFile) {
|
|
|
2540
2564
|
for (let i = level; i <= last_level; i++) {
|
|
2541
2565
|
stack.pop();
|
|
2542
2566
|
}
|
|
2543
|
-
const last_stack = stack
|
|
2567
|
+
const last_stack = stack.length
|
|
2568
|
+
? stack[stack.length - 1]
|
|
2569
|
+
: first_purl;
|
|
2544
2570
|
const cnodes = level_trees[last_stack] || [];
|
|
2545
2571
|
cnodes.push(purlString);
|
|
2546
2572
|
level_trees[last_stack] = cnodes;
|
|
@@ -2558,7 +2584,11 @@ export function parseMavenTree(rawOutput, pomFile) {
|
|
|
2558
2584
|
dependsOn: level_trees[lk],
|
|
2559
2585
|
});
|
|
2560
2586
|
}
|
|
2587
|
+
const parentComponent = deps?.length
|
|
2588
|
+
? { ...deps[0], type: "application" }
|
|
2589
|
+
: {};
|
|
2561
2590
|
return {
|
|
2591
|
+
parentComponent,
|
|
2562
2592
|
pkgList: deps,
|
|
2563
2593
|
dependenciesList,
|
|
2564
2594
|
};
|
|
@@ -2955,6 +2985,16 @@ export function parseGradleProperties(rawOutput, gradleModuleName = null) {
|
|
|
2955
2985
|
const tmpA = rawOutput.split("\n");
|
|
2956
2986
|
tmpA.forEach((l) => {
|
|
2957
2987
|
l = l.replace("\r", "");
|
|
2988
|
+
if (
|
|
2989
|
+
!gradleModuleName &&
|
|
2990
|
+
(l.startsWith("Root project '") || l.startsWith("Project '"))
|
|
2991
|
+
) {
|
|
2992
|
+
metadata.properties.push({
|
|
2993
|
+
name: "GradleModule",
|
|
2994
|
+
value: l.split("'")[1],
|
|
2995
|
+
});
|
|
2996
|
+
return;
|
|
2997
|
+
}
|
|
2958
2998
|
if (l.startsWith("----") || l.startsWith(">") || !l.includes(": ")) {
|
|
2959
2999
|
return;
|
|
2960
3000
|
}
|
|
@@ -2997,7 +3037,9 @@ export function executeParallelGradleProperties(dir, allProjectsStr) {
|
|
|
2997
3037
|
const gradleCmd = getGradleCommand(dir, null);
|
|
2998
3038
|
const gradleArgs = buildGradleCommandArguments(
|
|
2999
3039
|
process.env.GRADLE_ARGS ? process.env.GRADLE_ARGS.split(" ") : [],
|
|
3000
|
-
allProjectsStr.map((project) =>
|
|
3040
|
+
allProjectsStr.map((project) =>
|
|
3041
|
+
project ? `${project}:properties` : "properties",
|
|
3042
|
+
),
|
|
3001
3043
|
process.env.GRADLE_ARGS_PROPERTIES
|
|
3002
3044
|
? process.env.GRADLE_ARGS_PROPERTIES.split(" ")
|
|
3003
3045
|
: [],
|
|
@@ -3036,66 +3078,6 @@ export function executeParallelGradleProperties(dir, allProjectsStr) {
|
|
|
3036
3078
|
return "";
|
|
3037
3079
|
}
|
|
3038
3080
|
|
|
3039
|
-
/**
|
|
3040
|
-
* Execute gradle properties command and return parsed output
|
|
3041
|
-
*
|
|
3042
|
-
* @param {string} dir Directory to execute the command
|
|
3043
|
-
* @param {string} subProject Sub project name
|
|
3044
|
-
*/
|
|
3045
|
-
export function executeGradleProperties(dir, subProject) {
|
|
3046
|
-
const defaultProps = {
|
|
3047
|
-
rootProject: subProject,
|
|
3048
|
-
projects: [],
|
|
3049
|
-
metadata: {
|
|
3050
|
-
version: "latest",
|
|
3051
|
-
},
|
|
3052
|
-
};
|
|
3053
|
-
const gradleCmd = getGradleCommand(dir, null);
|
|
3054
|
-
const gradleArguments = buildGradleCommandArguments(
|
|
3055
|
-
process.env.GRADLE_ARGS ? process.env.GRADLE_ARGS.split(" ") : [],
|
|
3056
|
-
[subProject ? `${subProject}:properties` : "properties"],
|
|
3057
|
-
process.env.GRADLE_ARGS_PROPERTIES
|
|
3058
|
-
? process.env.GRADLE_ARGS_PROPERTIES.split(" ")
|
|
3059
|
-
: [],
|
|
3060
|
-
);
|
|
3061
|
-
console.log("Executing", gradleCmd, gradleArguments.join(" "), "in", dir);
|
|
3062
|
-
const result = spawnSync(gradleCmd, gradleArguments, {
|
|
3063
|
-
cwd: dir,
|
|
3064
|
-
encoding: "utf-8",
|
|
3065
|
-
shell: isWin,
|
|
3066
|
-
maxBuffer: 10 * 1024 * 1024,
|
|
3067
|
-
});
|
|
3068
|
-
if (result.status !== 0 || result.error) {
|
|
3069
|
-
if (result.stderr) {
|
|
3070
|
-
if (result.stderr?.includes("does not exist")) {
|
|
3071
|
-
return defaultProps;
|
|
3072
|
-
}
|
|
3073
|
-
console.error(result.stdout, result.stderr);
|
|
3074
|
-
console.log(
|
|
3075
|
-
"1. Check if the correct version of java and gradle are installed and available in PATH. For example, some project might require Java 11 with gradle 7.\n cdxgen container image bundles Java 23 with gradle 8 which might be incompatible.",
|
|
3076
|
-
);
|
|
3077
|
-
console.log(
|
|
3078
|
-
"2. Try running cdxgen with the unofficial JDK11-based image `ghcr.io/appthreat/cdxgen-java:v10`.",
|
|
3079
|
-
);
|
|
3080
|
-
if (result.stderr?.includes("not get unknown property")) {
|
|
3081
|
-
console.log(
|
|
3082
|
-
"3. Check if the SBOM is generated for the correct root project for your application.",
|
|
3083
|
-
);
|
|
3084
|
-
} else if (result.stderr?.includes("Unable to find Git repository")) {
|
|
3085
|
-
console.log(
|
|
3086
|
-
"3. A plugin might be requiring a valid git repository. Retry by cloning this repo or performing 'git init' as a workaround.",
|
|
3087
|
-
);
|
|
3088
|
-
}
|
|
3089
|
-
}
|
|
3090
|
-
}
|
|
3091
|
-
const stdout = result.stdout;
|
|
3092
|
-
if (stdout) {
|
|
3093
|
-
const cmdOutput = Buffer.from(stdout).toString();
|
|
3094
|
-
return parseGradleProperties(cmdOutput, subProject);
|
|
3095
|
-
}
|
|
3096
|
-
return {};
|
|
3097
|
-
}
|
|
3098
|
-
|
|
3099
3081
|
/**
|
|
3100
3082
|
* Parse bazel action graph output
|
|
3101
3083
|
* @param {string} rawOutput Raw string output
|
|
@@ -10208,7 +10190,7 @@ export function splitOutputByGradleProjects(rawOutput, relevantTasks) {
|
|
|
10208
10190
|
const outputSplitBySubprojects = new Map();
|
|
10209
10191
|
let subProjectOut = "";
|
|
10210
10192
|
const outSplitByLine = rawOutput.split("\n");
|
|
10211
|
-
let currentProjectName = "";
|
|
10193
|
+
let currentProjectName = "root";
|
|
10212
10194
|
const regexPatternForRelevantTasks = `.*:(${relevantTasks.join("|")})(?=\s|\r|$)`;
|
|
10213
10195
|
const regexForRelevantTasks = new RegExp(regexPatternForRelevantTasks);
|
|
10214
10196
|
for (const [i, line] of outSplitByLine.entries()) {
|
|
@@ -604,6 +604,10 @@ test("parse gradle properties", () => {
|
|
|
604
604
|
group: "com.ajmalab",
|
|
605
605
|
version: "0.0.1-SNAPSHOT",
|
|
606
606
|
properties: [
|
|
607
|
+
{
|
|
608
|
+
name: "GradleModule",
|
|
609
|
+
value: "dependency-diff-check",
|
|
610
|
+
},
|
|
607
611
|
{
|
|
608
612
|
name: "buildFile",
|
|
609
613
|
value:
|
|
@@ -632,6 +636,10 @@ test("parse gradle properties", () => {
|
|
|
632
636
|
group: "com.ajmalab.demo",
|
|
633
637
|
version: "latest",
|
|
634
638
|
properties: [
|
|
639
|
+
{
|
|
640
|
+
name: "GradleModule",
|
|
641
|
+
value: "java-test",
|
|
642
|
+
},
|
|
635
643
|
{
|
|
636
644
|
name: "buildFile",
|
|
637
645
|
value: "/home/almalinux/work/sandbox/java-test/build.gradle",
|
|
@@ -656,6 +664,10 @@ test("parse gradle properties", () => {
|
|
|
656
664
|
group: "com.ajmalab.demo",
|
|
657
665
|
version: "latest",
|
|
658
666
|
properties: [
|
|
667
|
+
{
|
|
668
|
+
name: "GradleModule",
|
|
669
|
+
value: "java-test",
|
|
670
|
+
},
|
|
659
671
|
{
|
|
660
672
|
name: "buildFile",
|
|
661
673
|
value: "/home/almalinux/work/sandbox/java-test/build.gradle",
|
|
@@ -807,6 +819,56 @@ test("parse maven tree", () => {
|
|
|
807
819
|
"pkg:maven/example.group/org.tycho.demo.rootfiles.win@1.0.0-SNAPSHOT?type=p2-installable-unit",
|
|
808
820
|
],
|
|
809
821
|
});
|
|
822
|
+
parsedList = parseMavenTree(
|
|
823
|
+
readFileSync("./test/data/mvn-metrics-tree.txt", {
|
|
824
|
+
encoding: "utf-8",
|
|
825
|
+
}),
|
|
826
|
+
);
|
|
827
|
+
expect(parsedList.pkgList.length).toEqual(58);
|
|
828
|
+
expect(parsedList.parentComponent["bom-ref"]).toEqual(
|
|
829
|
+
"pkg:maven/org.apache.dubbo/dubbo-metrics@3.3.0?type=pom",
|
|
830
|
+
);
|
|
831
|
+
expect(parsedList.dependenciesList.length).toEqual(58);
|
|
832
|
+
expect(parsedList.dependenciesList[0]).toEqual({
|
|
833
|
+
ref: "pkg:maven/org.apache.dubbo/dubbo-metrics@3.3.0?type=pom",
|
|
834
|
+
dependsOn: [
|
|
835
|
+
"pkg:maven/org.apache.dubbo/dubbo-test-check@3.3.0?type=jar",
|
|
836
|
+
"pkg:maven/org.junit.jupiter/junit-jupiter-engine@5.9.3?type=jar",
|
|
837
|
+
"pkg:maven/org.junit.jupiter/junit-jupiter-params@5.9.3?type=jar",
|
|
838
|
+
"pkg:maven/org.awaitility/awaitility@4.2.0?type=jar",
|
|
839
|
+
"pkg:maven/org.hamcrest/hamcrest@2.2?type=jar",
|
|
840
|
+
"pkg:maven/org.mockito/mockito-core@4.11.0?type=jar",
|
|
841
|
+
"pkg:maven/org.mockito/mockito-inline@4.11.0?type=jar",
|
|
842
|
+
],
|
|
843
|
+
});
|
|
844
|
+
parsedList = parseMavenTree(
|
|
845
|
+
readFileSync("./test/data/mvn-sbstarter-tree.txt", {
|
|
846
|
+
encoding: "utf-8",
|
|
847
|
+
}),
|
|
848
|
+
);
|
|
849
|
+
expect(parsedList.pkgList.length).toEqual(90);
|
|
850
|
+
expect(parsedList.parentComponent["bom-ref"]).toEqual(
|
|
851
|
+
"pkg:maven/org.apache.dubbo/dubbo-spring-boot-starter@3.3.0?type=jar",
|
|
852
|
+
);
|
|
853
|
+
expect(parsedList.dependenciesList.length).toEqual(90);
|
|
854
|
+
expect(parsedList.dependenciesList[0]).toEqual({
|
|
855
|
+
ref: "pkg:maven/org.apache.dubbo/dubbo-spring-boot-starter@3.3.0?type=jar",
|
|
856
|
+
dependsOn: [
|
|
857
|
+
"pkg:maven/org.yaml/snakeyaml@1.30?type=jar",
|
|
858
|
+
"pkg:maven/org.apache.dubbo/dubbo-spring-boot-autoconfigure@3.3.0?type=jar",
|
|
859
|
+
"pkg:maven/org.junit.vintage/junit-vintage-engine@5.8.2?type=jar",
|
|
860
|
+
"pkg:maven/net.bytebuddy/byte-buddy@1.15.0?type=jar",
|
|
861
|
+
"pkg:maven/net.bytebuddy/byte-buddy-agent@1.15.0?type=jar",
|
|
862
|
+
"pkg:maven/org.apache.dubbo/dubbo-test-check@3.3.0?type=jar",
|
|
863
|
+
"pkg:maven/org.apache.logging.log4j/log4j-slf4j-impl@2.17.2?type=jar",
|
|
864
|
+
"pkg:maven/org.junit.jupiter/junit-jupiter-engine@5.8.2?type=jar",
|
|
865
|
+
"pkg:maven/org.junit.jupiter/junit-jupiter-params@5.8.2?type=jar",
|
|
866
|
+
"pkg:maven/org.awaitility/awaitility@4.2.0?type=jar",
|
|
867
|
+
"pkg:maven/org.hamcrest/hamcrest@2.2?type=jar",
|
|
868
|
+
"pkg:maven/org.mockito/mockito-core@4.11.0?type=jar",
|
|
869
|
+
"pkg:maven/org.mockito/mockito-inline@4.11.0?type=jar",
|
|
870
|
+
],
|
|
871
|
+
});
|
|
810
872
|
});
|
|
811
873
|
|
|
812
874
|
// Slow test
|
|
@@ -3214,8 +3276,8 @@ test("parsePnpmLock", async () => {
|
|
|
3214
3276
|
expect(parsedList.dependenciesList).toHaveLength(462);
|
|
3215
3277
|
expect(parsedList.pkgList.filter((pkg) => !pkg.scope)).toHaveLength(3);
|
|
3216
3278
|
parsedList = await parsePnpmLock("./pnpm-lock.yaml");
|
|
3217
|
-
expect(parsedList.pkgList.length).toEqual(
|
|
3218
|
-
expect(parsedList.dependenciesList.length).toEqual(
|
|
3279
|
+
expect(parsedList.pkgList.length).toEqual(647);
|
|
3280
|
+
expect(parsedList.dependenciesList.length).toEqual(647);
|
|
3219
3281
|
expect(parsedList.pkgList[0]).toEqual({
|
|
3220
3282
|
group: "@ampproject",
|
|
3221
3283
|
name: "remapping",
|
|
@@ -4905,4 +4967,50 @@ test("hasAnyProjectType tests", () => {
|
|
|
4905
4967
|
excludeType: ["js"],
|
|
4906
4968
|
}),
|
|
4907
4969
|
).toBeFalsy();
|
|
4970
|
+
expect(
|
|
4971
|
+
hasAnyProjectType(["universal"], {
|
|
4972
|
+
projectType: undefined,
|
|
4973
|
+
excludeType: ["github"],
|
|
4974
|
+
}),
|
|
4975
|
+
).toBeTruthy();
|
|
4976
|
+
expect(
|
|
4977
|
+
hasAnyProjectType(["oci"], {
|
|
4978
|
+
projectType: undefined,
|
|
4979
|
+
excludeType: ["github"],
|
|
4980
|
+
}),
|
|
4981
|
+
).toBeFalsy();
|
|
4982
|
+
expect(
|
|
4983
|
+
hasAnyProjectType(["os"], {
|
|
4984
|
+
projectType: undefined,
|
|
4985
|
+
excludeType: ["jar"],
|
|
4986
|
+
}),
|
|
4987
|
+
).toBeFalsy();
|
|
4988
|
+
expect(
|
|
4989
|
+
hasAnyProjectType(["docker"], {
|
|
4990
|
+
projectType: undefined,
|
|
4991
|
+
excludeType: ["jar"],
|
|
4992
|
+
}),
|
|
4993
|
+
).toBeFalsy();
|
|
4994
|
+
expect(
|
|
4995
|
+
hasAnyProjectType(["oci", "java"], {
|
|
4996
|
+
projectType: undefined,
|
|
4997
|
+
excludeType: ["jar"],
|
|
4998
|
+
}),
|
|
4999
|
+
).toBeTruthy();
|
|
5000
|
+
expect(
|
|
5001
|
+
hasAnyProjectType(["oci", "ear"], {
|
|
5002
|
+
projectType: undefined,
|
|
5003
|
+
excludeType: ["jar"],
|
|
5004
|
+
}),
|
|
5005
|
+
).toBeFalsy();
|
|
5006
|
+
expect(
|
|
5007
|
+
hasAnyProjectType(
|
|
5008
|
+
["docker", "oci", "container", "os"],
|
|
5009
|
+
{
|
|
5010
|
+
projectType: undefined,
|
|
5011
|
+
excludeType: ["github"],
|
|
5012
|
+
},
|
|
5013
|
+
false,
|
|
5014
|
+
),
|
|
5015
|
+
).toBeFalsy();
|
|
4908
5016
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyclonedx/cdxgen",
|
|
3
|
-
"version": "10.10.
|
|
3
|
+
"version": "10.10.2",
|
|
4
4
|
"description": "Creates CycloneDX Software Bill of Materials (SBOM) from source or container image",
|
|
5
5
|
"homepage": "http://github.com/cyclonedx/cdxgen",
|
|
6
6
|
"author": "Prabhu Subramanian <prabhu@appthreat.com>",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cli/index.js"],"names":[],"mappings":"AA0wBA;;;;;;;;GAQG;AACH,gFAFW,MAAM,SAchB;AAyUD;;;;;;;GAOG;AACH,mCALW,MAAM,qBAiEhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;EAKhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM;;;;EAkBhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BA04BhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA2chB;AAED;;;;;;;;;;GAUG;AACH,+DAyEC;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA6bhB;AAED;;;;;GAKG;AACH,kCAHW,MAAM,8BA6YhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAqIhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAiDhB;AAED;;;;;GAKG;AACH,mCAHW,MAAM,qBA+KhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM,qBAsHhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM,qBA2BhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,qBA2BhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,qBA2BhB;AAED;;;;;GAKG;AACH,0CAHW,MAAM,qBAuBhB;AAED;;;;;GAKG;AACH,oEAkDC;AAED;;;;;GAKG;AACH,uCAHW,MAAM,8BA4ChB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,qBA2BhB;AAED;;;;;GAKG;AACH,qCAHW,MAAM,8BAwFhB;AAED;;;;;GAKG;AACH,iDAHW,MAAM,qBAiUhB;AAED;;;;;GAKG;AACH,mCAHW,MAAM,qBAwJhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM,8BAmFhB;AAED;;;;;GAKG;AACH,sCAHW,MAAM,8BA6XhB;AAED;;;;;GAKG;AACH,2CAHW,MAAM;;;;;;;;;;;;;;;;;;;;GAoChB;AAED;;;;;;;;KA+DC;AAED;;;;;;GAMG;AACH,yDA2CC;AAED;;;;;;;;;GASG;AACH,2GA6BC;AAED;;;;;GAKG;AACH,0CAHW,MAAM,EAAE,8BAmclB;AAED;;;;;GAKG;AACH,iCAHW,MAAM,8BAiUhB;AAED;;;;;GAKG;AACH,gCAHW,MAAM,qBAsOhB;AAED;;;;;;GAMG;AACH,wDAFY,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAAC,CAwHxE"}
|
|
@@ -268,13 +268,6 @@ export function parseGradleProperties(rawOutput: string, gradleModuleName?: stri
|
|
|
268
268
|
* @returns {string} The combined output for all subprojects of the Gradle properties task
|
|
269
269
|
*/
|
|
270
270
|
export function executeParallelGradleProperties(dir: string, allProjectsStr: any[]): string;
|
|
271
|
-
/**
|
|
272
|
-
* Execute gradle properties command and return parsed output
|
|
273
|
-
*
|
|
274
|
-
* @param {string} dir Directory to execute the command
|
|
275
|
-
* @param {string} subProject Sub project name
|
|
276
|
-
*/
|
|
277
|
-
export function executeGradleProperties(dir: string, subProject: string): {};
|
|
278
271
|
/**
|
|
279
272
|
* Parse bazel action graph output
|
|
280
273
|
* @param {string} rawOutput Raw string output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/helpers/utils.js"],"names":[],"mappings":"AA+JA,yCAYC;AAED,2CAQC;AA8KD;;;;;;;GAOG;AACH,4EAoBC;AAED;;;;;;GAMG;AACH,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/helpers/utils.js"],"names":[],"mappings":"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"}
|