From c40c666f6d56eb0a01a77d2605e4afc984c753c4 Mon Sep 17 00:00:00 2001 From: Lukas Nehrke Date: Thu, 16 Jul 2026 07:34:31 +0000 Subject: [PATCH] chore: upgrade exscalibur --- packages/cli/package.json | 10 ++--- packages/cli/src/commands/revisions.ts | 2 +- packages/cli/src/exscalibur.ts | 27 ++++-------- pnpm-lock.yaml | 58 +++++++++++++------------- 4 files changed, 43 insertions(+), 54 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 7d5a0ab..35f7c5a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -26,11 +26,11 @@ }, "dependencies": { "@drizzle-team/brocli": "^0.12.0", - "@scatool/analyzer-core": "0.1.0-alpha.0", - "@scatool/analyzer-plugin-go": "0.1.0-alpha.0", - "@scatool/analyzer-plugin-gradle": "0.1.0-alpha.0", - "@scatool/analyzer-plugin-javascript": "0.1.0-alpha.0", - "@scatool/analyzer-plugin-maven": "0.1.0-alpha.0", + "@scatool/analyzer-core": "0.1.0-alpha.2", + "@scatool/analyzer-plugin-go": "0.1.0-alpha.2", + "@scatool/analyzer-plugin-gradle": "0.1.0-alpha.2", + "@scatool/analyzer-plugin-javascript": "0.1.0-alpha.2", + "@scatool/analyzer-plugin-maven": "0.1.0-alpha.2", "@scatool/sdk": "workspace:*" }, "devDependencies": { diff --git a/packages/cli/src/commands/revisions.ts b/packages/cli/src/commands/revisions.ts index 98390e6..e4b5efd 100644 --- a/packages/cli/src/commands/revisions.ts +++ b/packages/cli/src/commands/revisions.ts @@ -117,7 +117,7 @@ function createOptions(options: { codebase?: boolean } = {}) { "Path to analyze with Exscalibur before uploading. Mutually exclusive with --file and --upload-id.", ), ignore: string("ignore").desc( - "Comma-separated glob patterns to ignore during Exscalibur analysis.", + "Comma-separated glob patterns to ignore for all Exscalibur extractors.", ), extractorOptionsJson: string("extractor-options-json").desc( "JSON object with Exscalibur options keyed by extractor name.", diff --git a/packages/cli/src/exscalibur.ts b/packages/cli/src/exscalibur.ts index 737fcfb..4a8eaff 100644 --- a/packages/cli/src/exscalibur.ts +++ b/packages/cli/src/exscalibur.ts @@ -29,7 +29,13 @@ export async function extractSbom( for (const extractor of EXTRACTORS) { try { - results.push(await extractor.extract(codebasePath, extractorOptions(extractor, options))); + results.push( + await extractor.extract( + codebasePath, + options.extractorOptions?.[extractor.name], + options.ignore ? { ignore: options.ignore } : undefined, + ), + ); } catch (err) { results.push({ packages: [], @@ -37,6 +43,7 @@ export async function extractSbom( relationships: [], issues: [ { + code: "extractor-failed", message: `${extractor.name} extractor failed: ${ err instanceof Error ? err.message : String(err) }`, @@ -49,21 +56,3 @@ export async function extractSbom( return mergeResults(results); } - -function extractorOptions( - extractor: Extractor, - options: ExtractSbomOptions, -): Record { - const specific = options.extractorOptions?.[extractor.name] ?? {}; - if (!options.ignore || options.ignore.length === 0 || !extractor.optionsSchema) { - return specific; - } - - const defaults = extractor.optionsSchema.parse({}) as Record; - const defaultIgnore = Array.isArray(defaults.ignore) ? defaults.ignore : []; - const specificIgnore = Array.isArray(specific.ignore) ? specific.ignore : []; - return { - ...specific, - ignore: [...defaultIgnore, ...specificIgnore, ...options.ignore], - }; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95b9c36..f1f103b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,20 +31,20 @@ importers: specifier: ^0.12.0 version: 0.12.0 '@scatool/analyzer-core': - specifier: 0.1.0-alpha.0 - version: 0.1.0-alpha.0(typescript@6.0.3) + specifier: 0.1.0-alpha.2 + version: 0.1.0-alpha.2(typescript@6.0.3) '@scatool/analyzer-plugin-go': - specifier: 0.1.0-alpha.0 - version: 0.1.0-alpha.0(typescript@6.0.3) + specifier: 0.1.0-alpha.2 + version: 0.1.0-alpha.2(typescript@6.0.3) '@scatool/analyzer-plugin-gradle': - specifier: 0.1.0-alpha.0 - version: 0.1.0-alpha.0(typescript@6.0.3) + specifier: 0.1.0-alpha.2 + version: 0.1.0-alpha.2(typescript@6.0.3) '@scatool/analyzer-plugin-javascript': - specifier: 0.1.0-alpha.0 - version: 0.1.0-alpha.0(typescript@6.0.3) + specifier: 0.1.0-alpha.2 + version: 0.1.0-alpha.2(typescript@6.0.3) '@scatool/analyzer-plugin-maven': - specifier: 0.1.0-alpha.0 - version: 0.1.0-alpha.0(typescript@6.0.3) + specifier: 0.1.0-alpha.2 + version: 0.1.0-alpha.2(typescript@6.0.3) '@scatool/sdk': specifier: workspace:* version: link:../sdk @@ -533,32 +533,32 @@ packages: '@rolldown/pluginutils@1.0.0-rc.17': resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} - '@scatool/analyzer-core@0.1.0-alpha.0': - resolution: {integrity: sha512-Bq90Mt7ruxKwQMXny4flYou24ooviNh9VxfMMFQrLJSakGW4G/1vHmIj/lvk6eAaLrxOCrMmXPiA08fYoPmjlA==} + '@scatool/analyzer-core@0.1.0-alpha.2': + resolution: {integrity: sha512-eyycoqA6aETLEO42WUeqOE+zOylzd5S3fpj3Qep98beswHTRBKA9+AoxEZqoseunrN5PLVhrKITizf6e600/ZQ==} engines: {node: '>=22'} peerDependencies: typescript: ^5 - '@scatool/analyzer-plugin-go@0.1.0-alpha.0': - resolution: {integrity: sha512-yrkvR2HHgFu7FrBMkIcLUx7PNwp136gOqMykhW3ueQf258hVjkU4MHOaVp6Xe76eEGtcxEUYVmLjG25CnSg1bA==} + '@scatool/analyzer-plugin-go@0.1.0-alpha.2': + resolution: {integrity: sha512-BRa8Z5Vme6LKJDt0bUkJa+sJTTPzHC96oJy/Frq3Fu8+aSG7XlcX6pixOOeQpOdinQdqROyO2SaIrZPSWMAitw==} engines: {node: '>=22'} peerDependencies: typescript: ^5 - '@scatool/analyzer-plugin-gradle@0.1.0-alpha.0': - resolution: {integrity: sha512-tUAx/58K9jbNvjlQSPPH7i7Sq4d86m7NuDfrbs3pE7M0Q5yuTn0m9LlU1IY+nSmcrMbSQPp5/Pqwmhl6GO4Xvg==} + '@scatool/analyzer-plugin-gradle@0.1.0-alpha.2': + resolution: {integrity: sha512-ZXLHLlVmd1lETqd2whHbRkP8NAgDryUA16RCgR7uHj7FrEC1DSIkPE6ZIRJHNFRxx4pAU80hfmdt1cv1mZP2zg==} engines: {node: '>=22'} peerDependencies: typescript: ^5 - '@scatool/analyzer-plugin-javascript@0.1.0-alpha.0': - resolution: {integrity: sha512-X8pCizFxj+ow6QQUxjLOa9GO2O/UAl9ljmhtH3iP64IyJZWfNly+7WOneSBqs9wMY8kzYvgmdHEuU4oSjnqThQ==} + '@scatool/analyzer-plugin-javascript@0.1.0-alpha.2': + resolution: {integrity: sha512-LcSLk5E6JOIJ3ASYycNuG4LJ4PIdbNSv3w9cGYQALjsjyeXFZ0USeRaVY1FdUanIUMqZmigw3tvUYHZLunxZiA==} engines: {node: '>=22'} peerDependencies: typescript: ^5.9.3 - '@scatool/analyzer-plugin-maven@0.1.0-alpha.0': - resolution: {integrity: sha512-//mTVxPWdgD/NIA9BqGi7Ix7HmH2y6waJbd/VWuILZnGn3TRDppXl3+Mq5DubMvUcuL3CdwyclhfhXRuBL4Sdw==} + '@scatool/analyzer-plugin-maven@0.1.0-alpha.2': + resolution: {integrity: sha512-GZeJ8agOlyACbBJkUdzoyfPiRNkQoB2ycL0w86Yvs1HcQcfcdeDXXg3BkmDW1uvfL3c4fMYtWz0EaOz9unxWNA==} engines: {node: '>=22'} peerDependencies: typescript: ^5 @@ -1570,37 +1570,37 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.17': {} - '@scatool/analyzer-core@0.1.0-alpha.0(typescript@6.0.3)': + '@scatool/analyzer-core@0.1.0-alpha.2(typescript@6.0.3)': dependencies: fast-glob: 3.3.3 typescript: 6.0.3 zod: 4.4.3 - '@scatool/analyzer-plugin-go@0.1.0-alpha.0(typescript@6.0.3)': + '@scatool/analyzer-plugin-go@0.1.0-alpha.2(typescript@6.0.3)': dependencies: - '@scatool/analyzer-core': 0.1.0-alpha.0(typescript@6.0.3) + '@scatool/analyzer-core': 0.1.0-alpha.2(typescript@6.0.3) packageurl-js: 2.0.1 typescript: 6.0.3 - '@scatool/analyzer-plugin-gradle@0.1.0-alpha.0(typescript@6.0.3)': + '@scatool/analyzer-plugin-gradle@0.1.0-alpha.2(typescript@6.0.3)': dependencies: - '@scatool/analyzer-core': 0.1.0-alpha.0(typescript@6.0.3) + '@scatool/analyzer-core': 0.1.0-alpha.2(typescript@6.0.3) packageurl-js: 2.0.1 typescript: 6.0.3 zod: 4.4.3 - '@scatool/analyzer-plugin-javascript@0.1.0-alpha.0(typescript@6.0.3)': + '@scatool/analyzer-plugin-javascript@0.1.0-alpha.2(typescript@6.0.3)': dependencies: - '@scatool/analyzer-core': 0.1.0-alpha.0(typescript@6.0.3) + '@scatool/analyzer-core': 0.1.0-alpha.2(typescript@6.0.3) jsonc-parser: 3.3.1 packageurl-js: 2.0.1 typescript: 6.0.3 yaml: 2.8.4 zod: 4.4.3 - '@scatool/analyzer-plugin-maven@0.1.0-alpha.0(typescript@6.0.3)': + '@scatool/analyzer-plugin-maven@0.1.0-alpha.2(typescript@6.0.3)': dependencies: - '@scatool/analyzer-core': 0.1.0-alpha.0(typescript@6.0.3) + '@scatool/analyzer-core': 0.1.0-alpha.2(typescript@6.0.3) packageurl-js: 2.0.1 typescript: 6.0.3 zod: 4.4.3