Skip to content

Commit b0c3691

Browse files
committed
feat: tools as components
Signed-off-by: Jan Kowalleck <[email protected]>
1 parent 7950982 commit b0c3691

File tree

4 files changed

+2164
-1687
lines changed

4 files changed

+2164
-1687
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"node": ">=14"
6868
},
6969
"dependencies": {
70-
"@cyclonedx/cyclonedx-library": "^6.11.0",
70+
"@cyclonedx/cyclonedx-library": "^7.0.0-beta.2",
7171
"normalize-package-data": "^3||^4||^5||^6",
7272
"xmlbuilder2": "^3.0.2"
7373
},

src/plugin.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@ export class CycloneDxWebpackPlugin {
185185
const cdxExternalReferenceFactory = new CDX.Factories.FromNodePackageJson.ExternalReferenceFactory()
186186
const cdxLicenseFactory = new CDX.Factories.LicenseFactory()
187187
const cdxPurlFactory = new CDX.Factories.FromNodePackageJson.PackageUrlFactory('npm')
188-
const cdxToolBuilder = new CDX.Builders.FromNodePackageJson.ToolBuilder(cdxExternalReferenceFactory)
189188
const cdxComponentBuilder = new CDX.Builders.FromNodePackageJson.ComponentBuilder(cdxExternalReferenceFactory, cdxLicenseFactory)
190189

191190
const bom = new CDX.Models.Bom()
@@ -253,7 +252,7 @@ export class CycloneDxWebpackPlugin {
253252
thisLogger.log('generated components.')
254253

255254
thisLogger.log('finalizing BOM...')
256-
this.#finalizeBom(bom, cdxToolBuilder, cdxPurlFactory, logger.getChildLogger('BomFinalizer'))
255+
this.#finalizeBom(bom, cdxComponentBuilder, cdxPurlFactory, logger.getChildLogger('BomFinalizer'))
257256
thisLogger.log('finalized BOM.')
258257
})
259258

@@ -321,7 +320,7 @@ export class CycloneDxWebpackPlugin {
321320

322321
#finalizeBom (
323322
bom: CDX.Models.Bom,
324-
cdxToolBuilder: CDX.Builders.FromNodePackageJson.ToolBuilder,
323+
cdxComponentBuilder: CDX.Builders.FromNodePackageJson.ComponentBuilder,
325324
cdxPurlFactory: CDX.Factories.FromNodePackageJson.PackageUrlFactory,
326325
logger: WebpackLogger
327326
): void {
@@ -332,8 +331,8 @@ export class CycloneDxWebpackPlugin {
332331
? undefined
333332
: new Date()
334333

335-
for (const tool of this.#makeTools(cdxToolBuilder, logger.getChildLogger('ToolMaker'))) {
336-
bom.metadata.tools.add(tool)
334+
for (const toolC of this.#makeToolCs(cdxComponentBuilder, logger.getChildLogger('ToolMaker'))) {
335+
bom.metadata.tools.components.add(toolC)
337336
}
338337

339338
if (bom.metadata.component !== undefined) {
@@ -343,8 +342,11 @@ export class CycloneDxWebpackPlugin {
343342
}
344343
}
345344

346-
* #makeTools (builder: CDX.Builders.FromNodePackageJson.ToolBuilder, logger: WebpackLogger): Generator<CDX.Models.Tool> {
347-
const packageJsonPaths = [resolve(module.path, '..', 'package.json')]
345+
* #makeToolCs (builder: CDX.Builders.FromNodePackageJson.ComponentBuilder, logger: WebpackLogger): Generator<CDX.Models.Component> {
346+
const packageJsonPaths: Array<[string, CDX.Enums.ComponentType]> = [
347+
// this plugin is an optional enhancement, not a standalone application -- use as `Library`
348+
[resolve(module.path, '..', 'package.json'), CDX.Enums.ComponentType.Library]
349+
]
348350

349351
const libs = [
350352
'@cyclonedx/cyclonedx-library'
@@ -356,18 +358,18 @@ export class CycloneDxWebpackPlugin {
356358
for (const nodeModulePath of nodeModulePaths) {
357359
const packageJsonPath = resolve(nodeModulePath, ...lib, 'package.json')
358360
if (existsSync(packageJsonPath)) {
359-
packageJsonPaths.push(packageJsonPath)
361+
packageJsonPaths.push([packageJsonPath, CDX.Enums.ComponentType.Library])
360362
continue libsLoop
361363
}
362364
}
363365
}
364366
/* eslint-enable no-labels */
365367

366-
for (const packageJsonPath of packageJsonPaths) {
368+
for (const [packageJsonPath, cType] of packageJsonPaths) {
367369
logger.log('try to build new Tool from PkgPath', packageJsonPath)
368370
const packageJson: object = loadJsonFile(packageJsonPath) ?? {}
369371
normalizePackageJson(packageJson, w => { logger.debug('normalizePackageJson from PkgPath', packageJsonPath, 'caused:', w) })
370-
const tool = builder.makeTool(packageJson)
372+
const tool = builder.makeComponent(packageJson, cType)
371373
if (tool !== undefined) {
372374
yield tool
373375
}

0 commit comments

Comments
 (0)