@coana-tech/cli 14.12.36 → 14.12.38
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/cli.mjs +138 -162
- package/package.json +1 -1
- package/reachability-analyzers-cli.mjs +24 -23
- package/repos/coana-tech/alucard/alucard.jar +0 -0
- package/repos/coana-tech/goana/bin/goana-darwin-amd64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-darwin-arm64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-linux-amd64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-linux-arm64.gz +0 -0
- package/repos/coana-tech/mambalade/dist/mambalade-0.3.12-py3-none-any.whl +0 -0
package/cli.mjs
CHANGED
|
@@ -4287,7 +4287,7 @@ var require_safe_stable_stringify = __commonJS({
|
|
|
4287
4287
|
return circularValue;
|
|
4288
4288
|
}
|
|
4289
4289
|
let res = "";
|
|
4290
|
-
let
|
|
4290
|
+
let join29 = ",";
|
|
4291
4291
|
const originalIndentation = indentation;
|
|
4292
4292
|
if (Array.isArray(value)) {
|
|
4293
4293
|
if (value.length === 0) {
|
|
@@ -4301,7 +4301,7 @@ var require_safe_stable_stringify = __commonJS({
|
|
|
4301
4301
|
indentation += spacer;
|
|
4302
4302
|
res += `
|
|
4303
4303
|
${indentation}`;
|
|
4304
|
-
|
|
4304
|
+
join29 = `,
|
|
4305
4305
|
${indentation}`;
|
|
4306
4306
|
}
|
|
4307
4307
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
@@ -4309,13 +4309,13 @@ ${indentation}`;
|
|
|
4309
4309
|
for (; i7 < maximumValuesToStringify - 1; i7++) {
|
|
4310
4310
|
const tmp2 = stringifyFnReplacer(String(i7), value, stack2, replacer, spacer, indentation);
|
|
4311
4311
|
res += tmp2 !== void 0 ? tmp2 : "null";
|
|
4312
|
-
res +=
|
|
4312
|
+
res += join29;
|
|
4313
4313
|
}
|
|
4314
4314
|
const tmp = stringifyFnReplacer(String(i7), value, stack2, replacer, spacer, indentation);
|
|
4315
4315
|
res += tmp !== void 0 ? tmp : "null";
|
|
4316
4316
|
if (value.length - 1 > maximumBreadth) {
|
|
4317
4317
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
4318
|
-
res += `${
|
|
4318
|
+
res += `${join29}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
4319
4319
|
}
|
|
4320
4320
|
if (spacer !== "") {
|
|
4321
4321
|
res += `
|
|
@@ -4336,7 +4336,7 @@ ${originalIndentation}`;
|
|
|
4336
4336
|
let separator = "";
|
|
4337
4337
|
if (spacer !== "") {
|
|
4338
4338
|
indentation += spacer;
|
|
4339
|
-
|
|
4339
|
+
join29 = `,
|
|
4340
4340
|
${indentation}`;
|
|
4341
4341
|
whitespace2 = " ";
|
|
4342
4342
|
}
|
|
@@ -4350,13 +4350,13 @@ ${indentation}`;
|
|
|
4350
4350
|
const tmp = stringifyFnReplacer(key2, value, stack2, replacer, spacer, indentation);
|
|
4351
4351
|
if (tmp !== void 0) {
|
|
4352
4352
|
res += `${separator}${strEscape(key2)}:${whitespace2}${tmp}`;
|
|
4353
|
-
separator =
|
|
4353
|
+
separator = join29;
|
|
4354
4354
|
}
|
|
4355
4355
|
}
|
|
4356
4356
|
if (keyLength > maximumBreadth) {
|
|
4357
4357
|
const removedKeys = keyLength - maximumBreadth;
|
|
4358
4358
|
res += `${separator}"...":${whitespace2}"${getItemCount(removedKeys)} not stringified"`;
|
|
4359
|
-
separator =
|
|
4359
|
+
separator = join29;
|
|
4360
4360
|
}
|
|
4361
4361
|
if (spacer !== "" && separator.length > 1) {
|
|
4362
4362
|
res = `
|
|
@@ -4397,7 +4397,7 @@ ${originalIndentation}`;
|
|
|
4397
4397
|
}
|
|
4398
4398
|
const originalIndentation = indentation;
|
|
4399
4399
|
let res = "";
|
|
4400
|
-
let
|
|
4400
|
+
let join29 = ",";
|
|
4401
4401
|
if (Array.isArray(value)) {
|
|
4402
4402
|
if (value.length === 0) {
|
|
4403
4403
|
return "[]";
|
|
@@ -4410,7 +4410,7 @@ ${originalIndentation}`;
|
|
|
4410
4410
|
indentation += spacer;
|
|
4411
4411
|
res += `
|
|
4412
4412
|
${indentation}`;
|
|
4413
|
-
|
|
4413
|
+
join29 = `,
|
|
4414
4414
|
${indentation}`;
|
|
4415
4415
|
}
|
|
4416
4416
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
@@ -4418,13 +4418,13 @@ ${indentation}`;
|
|
|
4418
4418
|
for (; i7 < maximumValuesToStringify - 1; i7++) {
|
|
4419
4419
|
const tmp2 = stringifyArrayReplacer(String(i7), value[i7], stack2, replacer, spacer, indentation);
|
|
4420
4420
|
res += tmp2 !== void 0 ? tmp2 : "null";
|
|
4421
|
-
res +=
|
|
4421
|
+
res += join29;
|
|
4422
4422
|
}
|
|
4423
4423
|
const tmp = stringifyArrayReplacer(String(i7), value[i7], stack2, replacer, spacer, indentation);
|
|
4424
4424
|
res += tmp !== void 0 ? tmp : "null";
|
|
4425
4425
|
if (value.length - 1 > maximumBreadth) {
|
|
4426
4426
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
4427
|
-
res += `${
|
|
4427
|
+
res += `${join29}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
4428
4428
|
}
|
|
4429
4429
|
if (spacer !== "") {
|
|
4430
4430
|
res += `
|
|
@@ -4437,7 +4437,7 @@ ${originalIndentation}`;
|
|
|
4437
4437
|
let whitespace2 = "";
|
|
4438
4438
|
if (spacer !== "") {
|
|
4439
4439
|
indentation += spacer;
|
|
4440
|
-
|
|
4440
|
+
join29 = `,
|
|
4441
4441
|
${indentation}`;
|
|
4442
4442
|
whitespace2 = " ";
|
|
4443
4443
|
}
|
|
@@ -4446,7 +4446,7 @@ ${indentation}`;
|
|
|
4446
4446
|
const tmp = stringifyArrayReplacer(key2, value[key2], stack2, replacer, spacer, indentation);
|
|
4447
4447
|
if (tmp !== void 0) {
|
|
4448
4448
|
res += `${separator}${strEscape(key2)}:${whitespace2}${tmp}`;
|
|
4449
|
-
separator =
|
|
4449
|
+
separator = join29;
|
|
4450
4450
|
}
|
|
4451
4451
|
}
|
|
4452
4452
|
if (spacer !== "" && separator.length > 1) {
|
|
@@ -4504,20 +4504,20 @@ ${originalIndentation}`;
|
|
|
4504
4504
|
indentation += spacer;
|
|
4505
4505
|
let res2 = `
|
|
4506
4506
|
${indentation}`;
|
|
4507
|
-
const
|
|
4507
|
+
const join30 = `,
|
|
4508
4508
|
${indentation}`;
|
|
4509
4509
|
const maximumValuesToStringify = Math.min(value.length, maximumBreadth);
|
|
4510
4510
|
let i7 = 0;
|
|
4511
4511
|
for (; i7 < maximumValuesToStringify - 1; i7++) {
|
|
4512
4512
|
const tmp2 = stringifyIndent(String(i7), value[i7], stack2, spacer, indentation);
|
|
4513
4513
|
res2 += tmp2 !== void 0 ? tmp2 : "null";
|
|
4514
|
-
res2 +=
|
|
4514
|
+
res2 += join30;
|
|
4515
4515
|
}
|
|
4516
4516
|
const tmp = stringifyIndent(String(i7), value[i7], stack2, spacer, indentation);
|
|
4517
4517
|
res2 += tmp !== void 0 ? tmp : "null";
|
|
4518
4518
|
if (value.length - 1 > maximumBreadth) {
|
|
4519
4519
|
const removedKeys = value.length - maximumBreadth - 1;
|
|
4520
|
-
res2 += `${
|
|
4520
|
+
res2 += `${join30}"... ${getItemCount(removedKeys)} not stringified"`;
|
|
4521
4521
|
}
|
|
4522
4522
|
res2 += `
|
|
4523
4523
|
${originalIndentation}`;
|
|
@@ -4533,16 +4533,16 @@ ${originalIndentation}`;
|
|
|
4533
4533
|
return '"[Object]"';
|
|
4534
4534
|
}
|
|
4535
4535
|
indentation += spacer;
|
|
4536
|
-
const
|
|
4536
|
+
const join29 = `,
|
|
4537
4537
|
${indentation}`;
|
|
4538
4538
|
let res = "";
|
|
4539
4539
|
let separator = "";
|
|
4540
4540
|
let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth);
|
|
4541
4541
|
if (isTypedArrayWithEntries(value)) {
|
|
4542
|
-
res += stringifyTypedArray(value,
|
|
4542
|
+
res += stringifyTypedArray(value, join29, maximumBreadth);
|
|
4543
4543
|
keys = keys.slice(value.length);
|
|
4544
4544
|
maximumPropertiesToStringify -= value.length;
|
|
4545
|
-
separator =
|
|
4545
|
+
separator = join29;
|
|
4546
4546
|
}
|
|
4547
4547
|
if (deterministic) {
|
|
4548
4548
|
keys = insertSort(keys);
|
|
@@ -4553,13 +4553,13 @@ ${indentation}`;
|
|
|
4553
4553
|
const tmp = stringifyIndent(key2, value[key2], stack2, spacer, indentation);
|
|
4554
4554
|
if (tmp !== void 0) {
|
|
4555
4555
|
res += `${separator}${strEscape(key2)}: ${tmp}`;
|
|
4556
|
-
separator =
|
|
4556
|
+
separator = join29;
|
|
4557
4557
|
}
|
|
4558
4558
|
}
|
|
4559
4559
|
if (keyLength > maximumBreadth) {
|
|
4560
4560
|
const removedKeys = keyLength - maximumBreadth;
|
|
4561
4561
|
res += `${separator}"...": "${getItemCount(removedKeys)} not stringified"`;
|
|
4562
|
-
separator =
|
|
4562
|
+
separator = join29;
|
|
4563
4563
|
}
|
|
4564
4564
|
if (separator !== "") {
|
|
4565
4565
|
res = `
|
|
@@ -6126,7 +6126,7 @@ var require_buffer_list = __commonJS({
|
|
|
6126
6126
|
}
|
|
6127
6127
|
}, {
|
|
6128
6128
|
key: "join",
|
|
6129
|
-
value: function
|
|
6129
|
+
value: function join29(s6) {
|
|
6130
6130
|
if (this.length === 0) return "";
|
|
6131
6131
|
var p3 = this.head;
|
|
6132
6132
|
var ret = "" + p3.data;
|
|
@@ -19073,7 +19073,7 @@ var require_lodash = __commonJS({
|
|
|
19073
19073
|
}
|
|
19074
19074
|
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
|
|
19075
19075
|
});
|
|
19076
|
-
function
|
|
19076
|
+
function join29(array, separator) {
|
|
19077
19077
|
return array == null ? "" : nativeJoin.call(array, separator);
|
|
19078
19078
|
}
|
|
19079
19079
|
function last2(array) {
|
|
@@ -20992,7 +20992,7 @@ var require_lodash = __commonJS({
|
|
|
20992
20992
|
lodash16.isUndefined = isUndefined2;
|
|
20993
20993
|
lodash16.isWeakMap = isWeakMap;
|
|
20994
20994
|
lodash16.isWeakSet = isWeakSet;
|
|
20995
|
-
lodash16.join =
|
|
20995
|
+
lodash16.join = join29;
|
|
20996
20996
|
lodash16.kebabCase = kebabCase;
|
|
20997
20997
|
lodash16.last = last2;
|
|
20998
20998
|
lodash16.lastIndexOf = lastIndexOf;
|
|
@@ -29988,7 +29988,7 @@ var require_builder = __commonJS({
|
|
|
29988
29988
|
}
|
|
29989
29989
|
};
|
|
29990
29990
|
exports2.SeqBuilder = SeqBuilder;
|
|
29991
|
-
function
|
|
29991
|
+
function join29(first2, second, ...others) {
|
|
29992
29992
|
const seq = new SeqBuilder(first2, second);
|
|
29993
29993
|
if (!others.length) {
|
|
29994
29994
|
return seq;
|
|
@@ -29997,7 +29997,7 @@ var require_builder = __commonJS({
|
|
|
29997
29997
|
return res.join(query);
|
|
29998
29998
|
}, seq);
|
|
29999
29999
|
}
|
|
30000
|
-
exports2.join =
|
|
30000
|
+
exports2.join = join29;
|
|
30001
30001
|
var SymBuilder = class extends AbstractBuilder {
|
|
30002
30002
|
constructor(opts) {
|
|
30003
30003
|
super();
|
|
@@ -190192,7 +190192,7 @@ var {
|
|
|
190192
190192
|
|
|
190193
190193
|
// dist/index.js
|
|
190194
190194
|
import { mkdir as mkdir3, readFile as readFile28, writeFile as writeFile11 } from "fs/promises";
|
|
190195
|
-
import { dirname as dirname13, join as
|
|
190195
|
+
import { dirname as dirname13, join as join28, resolve as resolve31 } from "path";
|
|
190196
190196
|
|
|
190197
190197
|
// ../utils/src/tmp-file.ts
|
|
190198
190198
|
import { rm, mkdtemp } from "fs/promises";
|
|
@@ -208005,22 +208005,36 @@ var NuGetSocketUpgradeManager = class {
|
|
|
208005
208005
|
};
|
|
208006
208006
|
|
|
208007
208007
|
// ../fixing-management/src/fixing-management/rust/cargo-socket-upgrade-manager.ts
|
|
208008
|
-
import { basename as basename6, dirname as dirname9,
|
|
208008
|
+
import { basename as basename6, dirname as dirname9, resolve as resolve19 } from "node:path";
|
|
208009
208009
|
var import_toml_eslint_parser2 = __toESM(require_lib10(), 1);
|
|
208010
208010
|
var import_picomatch3 = __toESM(require_picomatch2(), 1);
|
|
208011
208011
|
var import_semver3 = __toESM(require_semver2(), 1);
|
|
208012
208012
|
import assert6 from "node:assert";
|
|
208013
208013
|
import { readFile as readFile18 } from "node:fs/promises";
|
|
208014
|
-
import { existsSync as existsSync12 } from "node:fs";
|
|
208015
208014
|
var CargoSocketUpgradeManager = class {
|
|
208016
208015
|
constructor(rootDir) {
|
|
208017
208016
|
this.rootDir = rootDir;
|
|
208018
208017
|
}
|
|
208019
208018
|
cargoTomlMatcher = (0, import_picomatch3.default)("Cargo.toml");
|
|
208020
208019
|
cargoLockMatcher = (0, import_picomatch3.default)("Cargo.lock");
|
|
208021
|
-
async applySocketArtifactUpgrades(
|
|
208022
|
-
const tomlPatches = await
|
|
208023
|
-
|
|
208020
|
+
async applySocketArtifactUpgrades(manifestFiles, upgrades, artifacts, rangeStyle) {
|
|
208021
|
+
const tomlPatches = await asyncFlatMap(upgrades, async (upgrade) => {
|
|
208022
|
+
const artifact = artifacts[upgrade.idx];
|
|
208023
|
+
assert6(artifact.name);
|
|
208024
|
+
assert6(artifact.version);
|
|
208025
|
+
const directManifestFiles = i(artifact.manifestFiles?.map((ref) => ref.file) ?? []);
|
|
208026
|
+
return await asyncFlatMap(
|
|
208027
|
+
directManifestFiles.filter((manifestFile) => this.cargoTomlMatcher(basename6(manifestFile))),
|
|
208028
|
+
async (manifestFile) => this.handleCargoToml(manifestFile, upgrade, artifact, rangeStyle)
|
|
208029
|
+
);
|
|
208030
|
+
});
|
|
208031
|
+
const lockPatches = await asyncFlatMap(
|
|
208032
|
+
manifestFiles.filter((mf) => this.cargoLockMatcher(basename6(mf))),
|
|
208033
|
+
async (lockFile) => await asyncFlatMap(
|
|
208034
|
+
upgrades,
|
|
208035
|
+
async (upgrade) => this.handleCargoLock(lockFile, upgrade, artifacts[upgrade.idx])
|
|
208036
|
+
)
|
|
208037
|
+
);
|
|
208024
208038
|
const successfulPatches = extractSuccessfulPatches(tomlPatches.concat(lockPatches));
|
|
208025
208039
|
await applySocketPatchResults("RUST", this.rootDir, successfulPatches);
|
|
208026
208040
|
await asyncForEach(
|
|
@@ -208033,42 +208047,6 @@ var CargoSocketUpgradeManager = class {
|
|
|
208033
208047
|
}
|
|
208034
208048
|
);
|
|
208035
208049
|
}
|
|
208036
|
-
/**
|
|
208037
|
-
* Collect patches for Cargo.toml files (direct dependencies only)
|
|
208038
|
-
*/
|
|
208039
|
-
async collectCargoTomlPatches(upgrades, artifacts, rangeStyle) {
|
|
208040
|
-
return await asyncFlatMap(upgrades, async (upgrade) => {
|
|
208041
|
-
const artifact = artifacts[upgrade.idx];
|
|
208042
|
-
assert6(artifact.name);
|
|
208043
|
-
assert6(artifact.version);
|
|
208044
|
-
const directManifestFiles = i(artifact.manifestFiles?.map((ref) => ref.file) ?? []);
|
|
208045
|
-
return await asyncFlatMap(
|
|
208046
|
-
directManifestFiles.filter((manifestFile) => this.cargoTomlMatcher(basename6(manifestFile))),
|
|
208047
|
-
async (manifestFile) => this.handleCargoToml(manifestFile, upgrade, artifact, rangeStyle)
|
|
208048
|
-
);
|
|
208049
|
-
});
|
|
208050
|
-
}
|
|
208051
|
-
/**
|
|
208052
|
-
* Collect patches for Cargo.lock files (all dependencies)
|
|
208053
|
-
*/
|
|
208054
|
-
async collectCargoLockPatches(upgrades, artifacts) {
|
|
208055
|
-
return asyncFlatMap(upgrades, async (upgrade) => {
|
|
208056
|
-
const artifact = artifacts[upgrade.idx];
|
|
208057
|
-
assert6(artifact.name);
|
|
208058
|
-
assert6(artifact.version);
|
|
208059
|
-
const ancestorManifestFiles = i(
|
|
208060
|
-
(artifact.manifestFiles?.map((ref) => ref.file) ?? []).concat(
|
|
208061
|
-
artifact.toplevelAncestors?.flatMap(
|
|
208062
|
-
(ancestorId) => artifacts.find((a5) => a5.id === ancestorId)?.manifestFiles?.map((ref) => ref.file) ?? []
|
|
208063
|
-
) ?? []
|
|
208064
|
-
)
|
|
208065
|
-
);
|
|
208066
|
-
return asyncFlatMap(
|
|
208067
|
-
ancestorManifestFiles.filter((manifestFile) => this.cargoTomlMatcher(basename6(manifestFile))).map((tomlFile) => join13(dirname9(tomlFile), "Cargo.lock")).filter((lockFile) => existsSync12(resolve19(this.rootDir, lockFile))),
|
|
208068
|
-
async (lockFile) => this.handleCargoLock(lockFile, upgrade, artifact)
|
|
208069
|
-
);
|
|
208070
|
-
});
|
|
208071
|
-
}
|
|
208072
208050
|
/**
|
|
208073
208051
|
* Handle Cargo.toml file updates for direct dependencies
|
|
208074
208052
|
*/
|
|
@@ -208193,13 +208171,6 @@ var CargoSocketUpgradeManager = class {
|
|
|
208193
208171
|
}
|
|
208194
208172
|
}
|
|
208195
208173
|
}
|
|
208196
|
-
if (patches.length === 0) {
|
|
208197
|
-
patches.push({
|
|
208198
|
-
success: false,
|
|
208199
|
-
upgrades: [upgrade],
|
|
208200
|
-
reason: `Could not find ${artifact.name} version ${artifact.version} in lock file ${lockFile}`
|
|
208201
|
-
});
|
|
208202
|
-
}
|
|
208203
208174
|
return patches;
|
|
208204
208175
|
}
|
|
208205
208176
|
/**
|
|
@@ -208329,7 +208300,7 @@ async function applySocketUpgrades(ecosystem, rootDir, manifestFiles, upgrades,
|
|
|
208329
208300
|
|
|
208330
208301
|
// dist/cli-apply-fix.js
|
|
208331
208302
|
var import_lodash12 = __toESM(require_lodash(), 1);
|
|
208332
|
-
import { existsSync as
|
|
208303
|
+
import { existsSync as existsSync16 } from "fs";
|
|
208333
208304
|
|
|
208334
208305
|
// ../other-modules-communicator/src/other-modules-communicator.ts
|
|
208335
208306
|
import { execFileSync } from "child_process";
|
|
@@ -208340,15 +208311,15 @@ import { resolve as resolve21 } from "path";
|
|
|
208340
208311
|
|
|
208341
208312
|
// ../utils/dist/constants.js
|
|
208342
208313
|
var import_lodash6 = __toESM(require_lodash(), 1);
|
|
208343
|
-
import { dirname as dirname10, join as
|
|
208314
|
+
import { dirname as dirname10, join as join14 } from "node:path";
|
|
208344
208315
|
import { fileURLToPath as fileURLToPath3 } from "node:url";
|
|
208345
208316
|
|
|
208346
208317
|
// ../utils/dist/file-utils.js
|
|
208347
208318
|
var import_lodash5 = __toESM(require_lodash(), 1);
|
|
208348
208319
|
var import_micromatch = __toESM(require_micromatch(), 1);
|
|
208349
|
-
import { existsSync as
|
|
208320
|
+
import { existsSync as existsSync12 } from "fs";
|
|
208350
208321
|
import { access as access2, cp, readdir as readdir3, stat as stat2 } from "fs/promises";
|
|
208351
|
-
import { basename as basename7, join as
|
|
208322
|
+
import { basename as basename7, join as join13, relative as relative11, resolve as resolve20 } from "path";
|
|
208352
208323
|
var { uniq } = import_lodash5.default;
|
|
208353
208324
|
var { isMatch } = import_micromatch.default;
|
|
208354
208325
|
function* parents(dir) {
|
|
@@ -208377,10 +208348,10 @@ var COANA_ROOT = once2(() => {
|
|
|
208377
208348
|
return coanaRoot;
|
|
208378
208349
|
});
|
|
208379
208350
|
var REPOS_PATH = once2(() => {
|
|
208380
|
-
return process.env.REPOS_PATH ??
|
|
208351
|
+
return process.env.REPOS_PATH ?? join14(COANA_ROOT(), "repos");
|
|
208381
208352
|
});
|
|
208382
208353
|
var COANA_REPOS_PATH = once2(() => {
|
|
208383
|
-
return process.env.COANA_REPOS_PATH ??
|
|
208354
|
+
return process.env.COANA_REPOS_PATH ?? join14(REPOS_PATH(), "coana-tech");
|
|
208384
208355
|
});
|
|
208385
208356
|
|
|
208386
208357
|
// ../docker-management/src/constants.ts
|
|
@@ -208394,32 +208365,32 @@ var getImageTag = () => {
|
|
|
208394
208365
|
};
|
|
208395
208366
|
|
|
208396
208367
|
// ../docker-management/src/docker-spec.ts
|
|
208397
|
-
import { join as
|
|
208368
|
+
import { join as join15 } from "path";
|
|
208398
208369
|
var builderSpecs = [
|
|
208399
208370
|
{
|
|
208400
208371
|
name: "maven-builder",
|
|
208401
|
-
file:
|
|
208372
|
+
file: join15("builders", "maven", "Dockerfile"),
|
|
208402
208373
|
isBuilder: true
|
|
208403
208374
|
},
|
|
208404
208375
|
{
|
|
208405
208376
|
name: "python-builder",
|
|
208406
|
-
file:
|
|
208377
|
+
file: join15("builders", "python", "Dockerfile"),
|
|
208407
208378
|
isBuilder: true
|
|
208408
208379
|
},
|
|
208409
208380
|
{
|
|
208410
208381
|
name: "go-builder",
|
|
208411
|
-
file:
|
|
208382
|
+
file: join15("builders", "go", "Dockerfile"),
|
|
208412
208383
|
isBuilder: true
|
|
208413
208384
|
}
|
|
208414
208385
|
];
|
|
208415
208386
|
var packageManagerDockerSpecs = [
|
|
208416
208387
|
{
|
|
208417
208388
|
name: "npm-package-managers",
|
|
208418
|
-
file:
|
|
208389
|
+
file: join15("package-management", "npm", "Dockerfile")
|
|
208419
208390
|
},
|
|
208420
208391
|
{
|
|
208421
208392
|
name: "maven-package-managers",
|
|
208422
|
-
file:
|
|
208393
|
+
file: join15("package-management", "maven", "Dockerfile"),
|
|
208423
208394
|
variants: {
|
|
208424
208395
|
jdk8: {
|
|
208425
208396
|
JDK_URL_AMD64: "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u442-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u442b06.tar.gz",
|
|
@@ -208444,57 +208415,57 @@ var packageManagerDockerSpecs = [
|
|
|
208444
208415
|
},
|
|
208445
208416
|
{
|
|
208446
208417
|
name: "pip-package-managers",
|
|
208447
|
-
file:
|
|
208418
|
+
file: join15("package-management", "pip", "Dockerfile"),
|
|
208448
208419
|
from: {
|
|
208449
208420
|
name: "python-builder"
|
|
208450
208421
|
}
|
|
208451
208422
|
},
|
|
208452
208423
|
{
|
|
208453
208424
|
name: "go-package-manager",
|
|
208454
|
-
file:
|
|
208425
|
+
file: join15("package-management", "go", "Dockerfile"),
|
|
208455
208426
|
from: {
|
|
208456
208427
|
name: "go-builder"
|
|
208457
208428
|
}
|
|
208458
208429
|
},
|
|
208459
208430
|
{
|
|
208460
208431
|
name: "nuget-package-manager",
|
|
208461
|
-
file:
|
|
208432
|
+
file: join15("package-management", "nuget", "Dockerfile")
|
|
208462
208433
|
},
|
|
208463
208434
|
{
|
|
208464
208435
|
name: "cargo-package-manager",
|
|
208465
|
-
file:
|
|
208436
|
+
file: join15("package-management", "cargo", "Dockerfile")
|
|
208466
208437
|
}
|
|
208467
208438
|
];
|
|
208468
208439
|
var reachabilityAnalyzerDockerSpecs = [
|
|
208469
208440
|
{
|
|
208470
208441
|
name: "jelly-analyzer",
|
|
208471
|
-
file:
|
|
208442
|
+
file: join15("reachability-analyzers", "jelly", "Dockerfile")
|
|
208472
208443
|
},
|
|
208473
208444
|
{
|
|
208474
208445
|
name: "alucard-analyzer",
|
|
208475
|
-
file:
|
|
208446
|
+
file: join15("reachability-analyzers", "alucard", "Dockerfile")
|
|
208476
208447
|
},
|
|
208477
208448
|
{
|
|
208478
208449
|
name: "mambalade-analyzer",
|
|
208479
|
-
file:
|
|
208450
|
+
file: join15("reachability-analyzers", "mambalade", "Dockerfile"),
|
|
208480
208451
|
from: {
|
|
208481
208452
|
name: "python-builder"
|
|
208482
208453
|
}
|
|
208483
208454
|
},
|
|
208484
208455
|
{
|
|
208485
208456
|
name: "goana-analyzer",
|
|
208486
|
-
file:
|
|
208457
|
+
file: join15("reachability-analyzers", "goana", "Dockerfile"),
|
|
208487
208458
|
from: {
|
|
208488
208459
|
name: "go-builder"
|
|
208489
208460
|
}
|
|
208490
208461
|
},
|
|
208491
208462
|
{
|
|
208492
208463
|
name: "cocoa-analyzer",
|
|
208493
|
-
file:
|
|
208464
|
+
file: join15("reachability-analyzers", "cocoa", "Dockerfile")
|
|
208494
208465
|
},
|
|
208495
208466
|
{
|
|
208496
208467
|
name: "rustica-analyzer",
|
|
208497
|
-
file:
|
|
208468
|
+
file: join15("reachability-analyzers", "rustica", "Dockerfile")
|
|
208498
208469
|
}
|
|
208499
208470
|
];
|
|
208500
208471
|
function getAllPackageManagerSpecs() {
|
|
@@ -209091,15 +209062,15 @@ async function detectVariantMaven(projectDir) {
|
|
|
209091
209062
|
}
|
|
209092
209063
|
|
|
209093
209064
|
// ../docker-management/src/maven/gradle-version-detector.ts
|
|
209094
|
-
import { existsSync as
|
|
209095
|
-
import { join as
|
|
209065
|
+
import { existsSync as existsSync13 } from "fs";
|
|
209066
|
+
import { join as join16 } from "path";
|
|
209096
209067
|
import { readFile as readFile20 } from "fs/promises";
|
|
209097
209068
|
async function detectVariantGradle(projectDir) {
|
|
209098
209069
|
return sanitizeJvmVariant("GRADLE", projectDir, await detect(projectDir));
|
|
209099
209070
|
}
|
|
209100
209071
|
async function detect(projectDir) {
|
|
209101
|
-
const gradleWrapperPropertiesPath =
|
|
209102
|
-
const gradleWrapperProperties =
|
|
209072
|
+
const gradleWrapperPropertiesPath = join16(projectDir, "gradle", "wrapper", "gradle-wrapper.properties");
|
|
209073
|
+
const gradleWrapperProperties = existsSync13(gradleWrapperPropertiesPath) ? (await readFile20(gradleWrapperPropertiesPath, "utf-8")).split("\n").map((line) => line.trim()).filter((line) => !line.startsWith("#")).filter((line) => line) : void 0;
|
|
209103
209074
|
if (!gradleWrapperProperties) return void 0;
|
|
209104
209075
|
const distributionUrlRegex = /.*gradle-(\d+(\.\d+(\.\d+)?)?)/;
|
|
209105
209076
|
for (const prop2 of gradleWrapperProperties) {
|
|
@@ -209113,15 +209084,15 @@ async function detect(projectDir) {
|
|
|
209113
209084
|
}
|
|
209114
209085
|
|
|
209115
209086
|
// ../docker-management/src/maven/sbt-version-detector.ts
|
|
209116
|
-
import { existsSync as
|
|
209117
|
-
import { join as
|
|
209087
|
+
import { existsSync as existsSync14 } from "fs";
|
|
209088
|
+
import { join as join17 } from "path";
|
|
209118
209089
|
import { readFile as readFile21 } from "fs/promises";
|
|
209119
209090
|
async function detectVariantSbt(projectDir) {
|
|
209120
209091
|
return sanitizeJvmVariant("SBT", projectDir, await detect2(projectDir));
|
|
209121
209092
|
}
|
|
209122
209093
|
async function detect2(projectDir) {
|
|
209123
|
-
const sbtBuildPropertiesPath =
|
|
209124
|
-
const sbtBuildProperties =
|
|
209094
|
+
const sbtBuildPropertiesPath = join17(projectDir, "project", "build.properties");
|
|
209095
|
+
const sbtBuildProperties = existsSync14(sbtBuildPropertiesPath) ? (await readFile21(sbtBuildPropertiesPath, "utf-8")).split("\n").map((line) => line.trim()).filter((line) => !line.startsWith("#")).filter((line) => line) : void 0;
|
|
209125
209096
|
if (!sbtBuildProperties) return void 0;
|
|
209126
209097
|
for (const prop2 of sbtBuildProperties) {
|
|
209127
209098
|
const [key, value] = prop2.split("=");
|
|
@@ -209237,14 +209208,14 @@ var import_lodash11 = __toESM(require_lodash(), 1);
|
|
|
209237
209208
|
import { rmSync } from "fs";
|
|
209238
209209
|
import { mkdir, readFile as readFile22, writeFile as writeFile8 } from "fs/promises";
|
|
209239
209210
|
import { platform } from "os";
|
|
209240
|
-
import { join as
|
|
209211
|
+
import { join as join20, posix as posix2, relative as relative13, sep as sep3 } from "path";
|
|
209241
209212
|
|
|
209242
209213
|
// ../utils/src/file-utils.ts
|
|
209243
209214
|
var import_lodash8 = __toESM(require_lodash(), 1);
|
|
209244
209215
|
var import_micromatch2 = __toESM(require_micromatch(), 1);
|
|
209245
|
-
import { existsSync as
|
|
209216
|
+
import { existsSync as existsSync15 } from "fs";
|
|
209246
209217
|
import { access as access3, cp as cp2, readdir as readdir4, stat as stat3 } from "fs/promises";
|
|
209247
|
-
import { basename as basename8, join as
|
|
209218
|
+
import { basename as basename8, join as join18, relative as relative12, resolve as resolve22 } from "path";
|
|
209248
209219
|
var { uniq: uniq2 } = import_lodash8.default;
|
|
209249
209220
|
var { isMatch: isMatch2 } = import_micromatch2.default;
|
|
209250
209221
|
function* parents2(dir) {
|
|
@@ -209261,8 +209232,8 @@ function findParent2(dir, predicate, wholePath) {
|
|
|
209261
209232
|
}
|
|
209262
209233
|
async function getFilesRelative(dir, excludeDirs) {
|
|
209263
209234
|
async function helper(subDir, arrayOfFiles) {
|
|
209264
|
-
for (const item of await readdir4(
|
|
209265
|
-
const itemPath =
|
|
209235
|
+
for (const item of await readdir4(join18(dir, subDir), { withFileTypes: true })) {
|
|
209236
|
+
const itemPath = join18(subDir, item.name);
|
|
209266
209237
|
if (item.isDirectory()) {
|
|
209267
209238
|
if (!excludeDirs?.includes(item.name)) await helper(itemPath, arrayOfFiles);
|
|
209268
209239
|
} else if (item.isFile()) {
|
|
@@ -209492,7 +209463,7 @@ import { resolve as resolve23 } from "path";
|
|
|
209492
209463
|
|
|
209493
209464
|
// ../utils/src/constants.ts
|
|
209494
209465
|
var import_lodash9 = __toESM(require_lodash(), 1);
|
|
209495
|
-
import { dirname as dirname11, join as
|
|
209466
|
+
import { dirname as dirname11, join as join19 } from "node:path";
|
|
209496
209467
|
import { fileURLToPath as fileURLToPath4 } from "node:url";
|
|
209497
209468
|
var { once: once4 } = import_lodash9.default;
|
|
209498
209469
|
var fileName2 = fileURLToPath4(import.meta.url);
|
|
@@ -209505,10 +209476,10 @@ var COANA_ROOT2 = once4(() => {
|
|
|
209505
209476
|
return coanaRoot;
|
|
209506
209477
|
});
|
|
209507
209478
|
var REPOS_PATH2 = once4(() => {
|
|
209508
|
-
return process.env.REPOS_PATH ??
|
|
209479
|
+
return process.env.REPOS_PATH ?? join19(COANA_ROOT2(), "repos");
|
|
209509
209480
|
});
|
|
209510
209481
|
var COANA_REPOS_PATH2 = once4(() => {
|
|
209511
|
-
return process.env.COANA_REPOS_PATH ??
|
|
209482
|
+
return process.env.COANA_REPOS_PATH ?? join19(REPOS_PATH2(), "coana-tech");
|
|
209512
209483
|
});
|
|
209513
209484
|
var REQUIREMENTS_FILES_SEARCH_DEPTH = 2;
|
|
209514
209485
|
|
|
@@ -209597,7 +209568,7 @@ var OtherModulesCommunicator = class {
|
|
|
209597
209568
|
return "Running reachability analysis on package registry package";
|
|
209598
209569
|
}
|
|
209599
209570
|
}
|
|
209600
|
-
return `${_cmdStr()}: (${ecosystem}) ${relative13(this.rootWorkingDir,
|
|
209571
|
+
return `${_cmdStr()}: (${ecosystem}) ${relative13(this.rootWorkingDir, join20(subprojectPath, workspacePath)) || "."}`;
|
|
209601
209572
|
}
|
|
209602
209573
|
getProjectPath(subprojectPath) {
|
|
209603
209574
|
return this.options.runWithoutDocker ? subprojectPath : posix2.resolve("/project", relative13(this.rootWorkingDir, subprojectPath).replaceAll(sep3, posix2.sep));
|
|
@@ -209646,7 +209617,7 @@ var OtherModulesCommunicator = class {
|
|
|
209646
209617
|
async runPackageManagerCommandWithOutput(commandName, packageManagerName, subprojectPath, args2 = [], extraDockerArgs, env) {
|
|
209647
209618
|
const tmpDir = await this.getTmpDirForSubproject(subprojectPath);
|
|
209648
209619
|
const outputFileName = `${v4_default()}-${commandName}-output.json`;
|
|
209649
|
-
const outputFilePathThisProcess =
|
|
209620
|
+
const outputFilePathThisProcess = join20(tmpDir, outputFileName);
|
|
209650
209621
|
const outputFilePathOtherProcess = this.options.runWithoutDocker ? outputFilePathThisProcess : posix2.join(TMP_DIR_IN_DOCKER, outputFileName);
|
|
209651
209622
|
await this.runPackageManagerCommand(
|
|
209652
209623
|
commandName,
|
|
@@ -209711,7 +209682,7 @@ var OtherModulesCommunicator = class {
|
|
|
209711
209682
|
async runReachabilityAnalyzerCommandWithOutput(commandName, ecosystem, subprojectPath, workspacePath, args2, env) {
|
|
209712
209683
|
const tmpDir = await this.getTmpDirForSubproject(subprojectPath);
|
|
209713
209684
|
const outputFileName = `${v4_default()}-${commandName}-output.json`;
|
|
209714
|
-
const outputFilePathThisProcess =
|
|
209685
|
+
const outputFilePathThisProcess = join20(tmpDir, outputFileName);
|
|
209715
209686
|
const outputFilePathOtherProcess = this.options.runWithoutDocker ? outputFilePathThisProcess : posix2.join(TMP_DIR_IN_DOCKER, outputFileName);
|
|
209716
209687
|
await this.runReachabilityAnalyzerCommand(
|
|
209717
209688
|
commandName,
|
|
@@ -209748,7 +209719,7 @@ var OtherModulesCommunicator = class {
|
|
|
209748
209719
|
if (providedOptions.type === "providee") {
|
|
209749
209720
|
const tmpDir = await this.getTmpDirForSubproject(subprojectPath);
|
|
209750
209721
|
const providerFileName = "provider.json";
|
|
209751
|
-
const providerFileThisProcess =
|
|
209722
|
+
const providerFileThisProcess = join20(tmpDir, providerFileName);
|
|
209752
209723
|
const providerFileOtherProcess = this.options.runWithoutDocker ? providerFileThisProcess : posix2.join(TMP_DIR_IN_DOCKER, providerFileName);
|
|
209753
209724
|
await writeFile8(providerFileThisProcess, JSON.stringify(providedOptions.provider));
|
|
209754
209725
|
return ["--provider", providerFileOtherProcess];
|
|
@@ -209792,7 +209763,7 @@ var OtherModulesCommunicator = class {
|
|
|
209792
209763
|
async runReachabilityAnalysis(subprojectPath, workspacePath, workspaceData, ecosystem, vulnerabilities, reachabilityAnalysisOptions, otherAnalysisOptions) {
|
|
209793
209764
|
const tmpDir = await this.getTmpDirForSubproject(subprojectPath);
|
|
209794
209765
|
const inputFileName = `${v4_default()}-runReachabilityAnalysis-input.json`;
|
|
209795
|
-
const inputFileThisProcess =
|
|
209766
|
+
const inputFileThisProcess = join20(tmpDir, inputFileName);
|
|
209796
209767
|
const inputFileOtherProcess = this.options.runWithoutDocker ? inputFileThisProcess : posix2.join(TMP_DIR_IN_DOCKER, inputFileName);
|
|
209797
209768
|
await writeFile8(
|
|
209798
209769
|
inputFileThisProcess,
|
|
@@ -209834,7 +209805,7 @@ var setUpGoModuleCache = once6(async () => {
|
|
|
209834
209805
|
execFileSync("chmod", ["--recursive", "+rw", tmpDir]);
|
|
209835
209806
|
rmSync(tmpDir, { recursive: true, force: true });
|
|
209836
209807
|
});
|
|
209837
|
-
const [upper, work] = [
|
|
209808
|
+
const [upper, work] = [join20(tmpDir, "upper"), join20(tmpDir, "work")];
|
|
209838
209809
|
for (const dir of [upper, work]) await mkdir(dir);
|
|
209839
209810
|
const o7 = await execNeverFail(
|
|
209840
209811
|
cmdt`docker volume create --driver local --opt type=overlay
|
|
@@ -210427,7 +210398,7 @@ async function verifyFixes(fixes, otherModulesCommunicator, rootPath) {
|
|
|
210427
210398
|
if (pathsForEachFixIdData.length !== new Set(pathsForEachFixIdData).size) {
|
|
210428
210399
|
throw new Error("Multiple fix IDs found for the same subproject, workspace and ecosystem");
|
|
210429
210400
|
}
|
|
210430
|
-
const subprojectsNotFound = uniq3(fixes.filter(({ vulnerabilityInstance: v }) => !
|
|
210401
|
+
const subprojectsNotFound = uniq3(fixes.filter(({ vulnerabilityInstance: v }) => !existsSync16(resolve24(rootPath, v.subprojectPath))).map(({ vulnerabilityInstance: v }) => `${v.subprojectPath}:${v.ecosystem}`));
|
|
210431
210402
|
if (subprojectsNotFound.length > 0) {
|
|
210432
210403
|
throw new Error(`Cannot find the following subprojects: ${subprojectsNotFound.join(", ")}`);
|
|
210433
210404
|
}
|
|
@@ -211230,15 +211201,15 @@ import { relative as relative15, resolve as resolve28 } from "path";
|
|
|
211230
211201
|
// ../project-management/src/project-management/ecosystem-management/ecosystem-manager.ts
|
|
211231
211202
|
var import_micromatch3 = __toESM(require_micromatch2(), 1);
|
|
211232
211203
|
import { readdir as readdir6 } from "fs/promises";
|
|
211233
|
-
import { join as
|
|
211204
|
+
import { join as join23, relative as relative14, resolve as resolve27 } from "path";
|
|
211234
211205
|
|
|
211235
211206
|
// ../project-management/src/project-management/ecosystem-management/ecosystem-specs.ts
|
|
211236
|
-
import { existsSync as
|
|
211207
|
+
import { existsSync as existsSync18 } from "fs";
|
|
211237
211208
|
import { readdir as readdir5, readFile as readFile25 } from "fs/promises";
|
|
211238
|
-
import { join as
|
|
211209
|
+
import { join as join22, sep as sep4 } from "path";
|
|
211239
211210
|
|
|
211240
211211
|
// ../utils/src/pip-utils.ts
|
|
211241
|
-
import { existsSync as
|
|
211212
|
+
import { existsSync as existsSync17 } from "fs";
|
|
211242
211213
|
import { readFile as readFile24 } from "fs/promises";
|
|
211243
211214
|
import { resolve as resolve26 } from "path";
|
|
211244
211215
|
import util4 from "util";
|
|
@@ -211249,7 +211220,7 @@ var import_semver5 = __toESM(require_semver2(), 1);
|
|
|
211249
211220
|
import { execFileSync as execFileSync2 } from "child_process";
|
|
211250
211221
|
import { constants as constants2 } from "fs";
|
|
211251
211222
|
import { access as access4, readFile as readFile23 } from "fs/promises";
|
|
211252
|
-
import { join as
|
|
211223
|
+
import { join as join21, resolve as resolve25 } from "path";
|
|
211253
211224
|
import util3 from "util";
|
|
211254
211225
|
var { once: once7 } = import_lodash13.default;
|
|
211255
211226
|
var systemPython = once7(() => {
|
|
@@ -211302,7 +211273,7 @@ var specs = {
|
|
|
211302
211273
|
[
|
|
211303
211274
|
/^(pyproject.toml|setup.py|requirements.*\.txt)/,
|
|
211304
211275
|
async (projectDir) => {
|
|
211305
|
-
const isPythonProject = await exists(
|
|
211276
|
+
const isPythonProject = await exists(join22(projectDir, "pyproject.toml")) || await exists(join22(projectDir, "setup.py")) && await isSetupPySetuptools(join22(projectDir, "setup.py"));
|
|
211306
211277
|
if (isPythonProject) {
|
|
211307
211278
|
properPythonProjects.push(projectDir + sep4);
|
|
211308
211279
|
return "PIP_REQUIREMENTS";
|
|
@@ -211325,7 +211296,7 @@ var specs = {
|
|
|
211325
211296
|
[
|
|
211326
211297
|
"uv.lock",
|
|
211327
211298
|
async (projectDir) => {
|
|
211328
|
-
if (await exists(
|
|
211299
|
+
if (await exists(join22(projectDir, "pyproject.toml"))) {
|
|
211329
211300
|
logger.warn("uv is not supported yet, using plain pyproject.toml as a fallback");
|
|
211330
211301
|
return "PIP_REQUIREMENTS";
|
|
211331
211302
|
} else logger.error("uv.lock found without pyproject.toml");
|
|
@@ -211346,8 +211317,8 @@ function getEcosystemSpecs(ecosystems) {
|
|
|
211346
211317
|
}
|
|
211347
211318
|
function packageManagerIfPackageJSONExistsAndValid(packageManager) {
|
|
211348
211319
|
return async (projectDir) => {
|
|
211349
|
-
if (!
|
|
211350
|
-
const packageJSONPath =
|
|
211320
|
+
if (!existsSync18(join22(projectDir, "package.json"))) return void 0;
|
|
211321
|
+
const packageJSONPath = join22(projectDir, "package.json");
|
|
211351
211322
|
try {
|
|
211352
211323
|
JSON.parse(await readFile25(packageJSONPath, "utf-8"));
|
|
211353
211324
|
return packageManager;
|
|
@@ -211404,7 +211375,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
211404
211375
|
const resolvedProjectDir = resolve27(mainProjectDir, relativeProjectDir);
|
|
211405
211376
|
if (config3.includeDirs.length > 0)
|
|
211406
211377
|
workspacePaths = workspacePaths.filter(
|
|
211407
|
-
(workspacePath) => isMatch3(relative14(mainProjectDir,
|
|
211378
|
+
(workspacePath) => isMatch3(relative14(mainProjectDir, join23(resolvedProjectDir, workspacePath)), config3.includeDirs)
|
|
211408
211379
|
);
|
|
211409
211380
|
workspacePaths.filter((workspacePath) => workspacePath !== ".").forEach((workspacePath) => projectDirsAlreadyCovered.push(resolve27(resolvedProjectDir, workspacePath)));
|
|
211410
211381
|
if (workspacePaths.length > 0)
|
|
@@ -211432,7 +211403,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
211432
211403
|
}
|
|
211433
211404
|
}
|
|
211434
211405
|
for (const dir of directoriesToTraverse) {
|
|
211435
|
-
await recHelper(
|
|
211406
|
+
await recHelper(join23(projectDir, dir), true);
|
|
211436
211407
|
}
|
|
211437
211408
|
}
|
|
211438
211409
|
async function getPackageManagerName(projectDir, foundProjectFiles, foundLockFiles) {
|
|
@@ -211461,7 +211432,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
211461
211432
|
const filesAndDirectories = await readdir6(projectDir, { withFileTypes: true });
|
|
211462
211433
|
for (const dirent of filesAndDirectories) {
|
|
211463
211434
|
const fileOrDirectory = dirent.name;
|
|
211464
|
-
const fullPath =
|
|
211435
|
+
const fullPath = join23(projectDir, fileOrDirectory);
|
|
211465
211436
|
if (dirent.isDirectory()) {
|
|
211466
211437
|
if (shouldIgnoreDir(fileOrDirectory) || shouldIgnoreDueToExcludeDirsOrChangedFiles(config3, fullPath))
|
|
211467
211438
|
continue;
|
|
@@ -211488,7 +211459,7 @@ var EcosystemManager = class _EcosystemManager {
|
|
|
211488
211459
|
packageManagerName,
|
|
211489
211460
|
subprojectPath,
|
|
211490
211461
|
workspacePaths: workspacePaths.filter(
|
|
211491
|
-
(workspacePath) => !shouldIgnoreDueToExcludeDirsOrChangedFiles(this.config,
|
|
211462
|
+
(workspacePath) => !shouldIgnoreDueToExcludeDirsOrChangedFiles(this.config, join23(subprojectPath, workspacePath))
|
|
211492
211463
|
)
|
|
211493
211464
|
}));
|
|
211494
211465
|
}
|
|
@@ -211715,7 +211686,7 @@ var kleur_default = $;
|
|
|
211715
211686
|
// dist/cli-core.js
|
|
211716
211687
|
var import_lodash15 = __toESM(require_lodash(), 1);
|
|
211717
211688
|
import os from "os";
|
|
211718
|
-
import { join as
|
|
211689
|
+
import { join as join26, relative as relative16, resolve as resolve30 } from "path";
|
|
211719
211690
|
|
|
211720
211691
|
// ../utils/src/dashboard-api/shared-api.ts
|
|
211721
211692
|
var DashboardAPI = class {
|
|
@@ -212034,16 +212005,16 @@ function isVulnChainWithParentsMap(v) {
|
|
|
212034
212005
|
var DEFAULT_REPORT_FILENAME_BASE = "coana-report";
|
|
212035
212006
|
|
|
212036
212007
|
// dist/internal/exclude-dirs-from-configuration-files.js
|
|
212037
|
-
import { existsSync as
|
|
212008
|
+
import { existsSync as existsSync19 } from "fs";
|
|
212038
212009
|
import { readFile as readFile26 } from "fs/promises";
|
|
212039
212010
|
import { basename as basename9, resolve as resolve29 } from "path";
|
|
212040
212011
|
var import_yaml2 = __toESM(require_dist11(), 1);
|
|
212041
212012
|
async function inferExcludeDirsFromConfigurationFiles(rootWorkingDir) {
|
|
212042
212013
|
const socketYmlConfigFile = resolve29(rootWorkingDir, "socket.yml");
|
|
212043
|
-
if (
|
|
212014
|
+
if (existsSync19(socketYmlConfigFile))
|
|
212044
212015
|
return inferExcludeDirsFromSocketConfig(socketYmlConfigFile);
|
|
212045
212016
|
const socketYamlConfigFile = resolve29(rootWorkingDir, "socket.yaml");
|
|
212046
|
-
if (
|
|
212017
|
+
if (existsSync19(socketYamlConfigFile))
|
|
212047
212018
|
return inferExcludeDirsFromSocketConfig(socketYamlConfigFile);
|
|
212048
212019
|
return void 0;
|
|
212049
212020
|
}
|
|
@@ -212165,7 +212136,7 @@ function transformToVulnChainNode(dependencyTree) {
|
|
|
212165
212136
|
// dist/internal/socket-mode-helpers-socket-dependency-trees.js
|
|
212166
212137
|
var import_packageurl_js = __toESM(require_packageurl_js(), 1);
|
|
212167
212138
|
var import_picomatch4 = __toESM(require_picomatch2(), 1);
|
|
212168
|
-
import { basename as basename10, dirname as dirname12, join as
|
|
212139
|
+
import { basename as basename10, dirname as dirname12, join as join24, sep as sep5 } from "path";
|
|
212169
212140
|
var REQUIREMENTS_FILES_SEARCH_DEPTH2 = 3;
|
|
212170
212141
|
function inferWorkspaceFromManifestPath(ecosystem, manifestPath, properPythonProjects) {
|
|
212171
212142
|
switch (ecosystem) {
|
|
@@ -212285,7 +212256,7 @@ async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash,
|
|
|
212285
212256
|
for (const file of allFiles) {
|
|
212286
212257
|
const base = basename10(file);
|
|
212287
212258
|
const workspaceDir = dirname12(file) || ".";
|
|
212288
|
-
if (base === "pyproject.toml" || base === "setup.py" && await isSetupPySetuptools(
|
|
212259
|
+
if (base === "pyproject.toml" || base === "setup.py" && await isSetupPySetuptools(join24(rootWorkingDirectory, file))) {
|
|
212289
212260
|
if (!properPythonProjects.includes(workspaceDir)) {
|
|
212290
212261
|
properPythonProjects.push(workspaceDir);
|
|
212291
212262
|
}
|
|
@@ -212328,18 +212299,26 @@ async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash,
|
|
|
212328
212299
|
break;
|
|
212329
212300
|
}
|
|
212330
212301
|
}
|
|
212331
|
-
|
|
212332
|
-
|
|
212333
|
-
inferWorkspaceFromManifestPath(ecosystem, manifestFile, properPythonProjects)
|
|
212334
|
-
|
|
212335
|
-
|
|
212336
|
-
|
|
212302
|
+
const workspaceToManifestFiles = {};
|
|
212303
|
+
manifestFiles.forEach((manifestFile) => {
|
|
212304
|
+
const workspace = inferWorkspaceFromManifestPath(ecosystem, manifestFile, properPythonProjects);
|
|
212305
|
+
if (!workspace)
|
|
212306
|
+
return;
|
|
212307
|
+
(workspaceToManifestFiles[workspace] ??= []).push(manifestFile);
|
|
212308
|
+
});
|
|
212309
|
+
if (Object.keys(workspaceToManifestFiles).length === 0) {
|
|
212310
|
+
manifestFiles.forEach((manifestFile) => {
|
|
212311
|
+
const workspace = inferProjectFromManifestPath(ecosystem, manifestFile);
|
|
212312
|
+
if (!workspace)
|
|
212313
|
+
return;
|
|
212314
|
+
(workspaceToManifestFiles[workspace] ??= []).push(manifestFile);
|
|
212315
|
+
});
|
|
212337
212316
|
}
|
|
212338
|
-
if (
|
|
212317
|
+
if (Object.keys(workspaceToManifestFiles).length === 0 && artifact.vulnerabilities && artifact.vulnerabilities.length > 0) {
|
|
212339
212318
|
const purl = new import_packageurl_js.PackageURL(artifact.type, artifact.namespace, artifact.name, artifact.version, artifact.qualifiers).toString();
|
|
212340
212319
|
purlsFailedToFindWorkspace.add(purl);
|
|
212341
212320
|
}
|
|
212342
|
-
for (const [
|
|
212321
|
+
for (const [workspace, manifestFiles2] of Object.entries(workspaceToManifestFiles)) {
|
|
212343
212322
|
if (!ecosystemToWorkspaceToAnalysisData[ecosystem]) {
|
|
212344
212323
|
ecosystemToWorkspaceToAnalysisData[ecosystem] = {};
|
|
212345
212324
|
}
|
|
@@ -212348,21 +212327,18 @@ async function fetchArtifactsFromSocket(rootWorkingDirectory, manifestsTarHash,
|
|
|
212348
212327
|
type: "socket",
|
|
212349
212328
|
data: {
|
|
212350
212329
|
type: ecosystem,
|
|
212351
|
-
manifestFiles:
|
|
212330
|
+
manifestFiles: manifestFiles2,
|
|
212352
212331
|
artifacts: []
|
|
212353
212332
|
}
|
|
212354
212333
|
};
|
|
212355
212334
|
}
|
|
212356
212335
|
const workspaceData = ecosystemToWorkspaceToAnalysisData[ecosystem][workspace];
|
|
212357
212336
|
if (workspaceData.type === "socket") {
|
|
212358
|
-
if (!workspaceData.data.manifestFiles.includes(manifestFile)) {
|
|
212359
|
-
workspaceData.data.manifestFiles.push(manifestFile);
|
|
212360
|
-
}
|
|
212361
212337
|
workspaceData.data.artifacts.push(artifact);
|
|
212362
212338
|
}
|
|
212363
212339
|
}
|
|
212364
212340
|
if (artifact.vulnerabilities && artifact.vulnerabilities.length > 0) {
|
|
212365
|
-
for (const workspace of
|
|
212341
|
+
for (const workspace of Object.keys(workspaceToManifestFiles)) {
|
|
212366
212342
|
for (const vuln of artifact.vulnerabilities) {
|
|
212367
212343
|
const vulnerability = {
|
|
212368
212344
|
url: vuln.ghsaId,
|
|
@@ -226140,8 +226116,8 @@ var { root: root2 } = static_exports;
|
|
|
226140
226116
|
|
|
226141
226117
|
// ../utils/src/maven-utils.ts
|
|
226142
226118
|
var import_lodash14 = __toESM(require_lodash(), 1);
|
|
226143
|
-
import { existsSync as
|
|
226144
|
-
import { join as
|
|
226119
|
+
import { existsSync as existsSync20, readdirSync as readdirSync4, statSync as statSync3 } from "fs";
|
|
226120
|
+
import { join as join25 } from "path";
|
|
226145
226121
|
var { memoize: memoize3 } = import_lodash14.default;
|
|
226146
226122
|
var memoizedParseShellArgs = memoize3(parseShellArgs);
|
|
226147
226123
|
var MAVEN_PUBLIC_REPOSITORIES = [
|
|
@@ -227512,7 +227488,7 @@ async function onlineScan(dependencyTree, apiKey, timeout) {
|
|
|
227512
227488
|
}
|
|
227513
227489
|
|
|
227514
227490
|
// dist/version.js
|
|
227515
|
-
var version2 = "14.12.
|
|
227491
|
+
var version2 = "14.12.38";
|
|
227516
227492
|
|
|
227517
227493
|
// dist/cli-core.js
|
|
227518
227494
|
var { mapValues, omit, partition, pick } = import_lodash15.default;
|
|
@@ -227617,7 +227593,7 @@ var CliCore = class {
|
|
|
227617
227593
|
}
|
|
227618
227594
|
}
|
|
227619
227595
|
async main() {
|
|
227620
|
-
this.coanaLogPath =
|
|
227596
|
+
this.coanaLogPath = join26(await createTmpDirectory("coana-cli-"), "coana-log.txt");
|
|
227621
227597
|
logger.initWinstonLogger(this.options.debug, this.coanaLogPath);
|
|
227622
227598
|
logger.silent = this.options.silent;
|
|
227623
227599
|
try {
|
|
@@ -228199,7 +228175,7 @@ async function getGitDataToMetadataIfAvailable(rootWorkingDirectory) {
|
|
|
228199
228175
|
}
|
|
228200
228176
|
|
|
228201
228177
|
// dist/cli-upgrade-purl.js
|
|
228202
|
-
import { join as
|
|
228178
|
+
import { join as join27, relative as relative17 } from "node:path";
|
|
228203
228179
|
var import_packageurl_js2 = __toESM(require_packageurl_js(), 1);
|
|
228204
228180
|
var ECOSYSTEMS_WITH_SOCKET_UPGRADES = ["NPM", "MAVEN", "NUGET", "GO", "RUST"];
|
|
228205
228181
|
async function upgradePurl(path2, upgrades, options, logFile, cliFixRunId) {
|
|
@@ -228293,7 +228269,7 @@ ${upgrades.map((upgrade) => ` ${upgrade.purl} -> ${upgrade.upgradeVersion}`).joi
|
|
|
228293
228269
|
const subprojectPromiseQueue = new PromiseQueue(Number(options.concurrency));
|
|
228294
228270
|
supportedSubprojects.forEach((subproject) => {
|
|
228295
228271
|
subprojectPromiseQueue.enqueueTask(async () => {
|
|
228296
|
-
const workspacePathsMatchingGlob = subproject.workspacePaths.filter((wsPath) => minimatch(
|
|
228272
|
+
const workspacePathsMatchingGlob = subproject.workspacePaths.filter((wsPath) => minimatch(join27(subproject.subprojectPath, wsPath), options.globPattern ?? "**"));
|
|
228297
228273
|
if (workspacePathsMatchingGlob.length === 0)
|
|
228298
228274
|
return;
|
|
228299
228275
|
logger.info(`Found workspaces for subproject ${subproject.subprojectPath}${options.globPattern ? `matching glob ${options.globPattern}` : ""}:
|
|
@@ -228322,7 +228298,7 @@ ${workspacePathsMatchingGlob.map((wsPath) => ` ${wsPath}`).join("\n")}`);
|
|
|
228322
228298
|
});
|
|
228323
228299
|
if (vulnerabilityFixes.length === 0)
|
|
228324
228300
|
return;
|
|
228325
|
-
logger.info(`Found ${vulnerabilityFixes.length} ${vulnerabilityFixes.length === 1 ? "dependency" : "dependencies"} matching upgrade specs for ${
|
|
228301
|
+
logger.info(`Found ${vulnerabilityFixes.length} ${vulnerabilityFixes.length === 1 ? "dependency" : "dependencies"} matching upgrade specs for ${join27(subproject.subprojectPath, wsPath)}`);
|
|
228326
228302
|
workspaceToFixes[wsPath] = [
|
|
228327
228303
|
{
|
|
228328
228304
|
fixId: "dummy",
|
|
@@ -228343,7 +228319,7 @@ ${workspacePathsMatchingGlob.map((wsPath) => ` ${wsPath}`).join("\n")}`);
|
|
|
228343
228319
|
}
|
|
228344
228320
|
}
|
|
228345
228321
|
var signalFixApplied = (_fixId, subprojectPath, workspacePath, vulnerabilityFixes) => {
|
|
228346
|
-
logger.info(`Successfully upgraded purls for: ${
|
|
228322
|
+
logger.info(`Successfully upgraded purls for: ${join27(subprojectPath, workspacePath)}`);
|
|
228347
228323
|
logger.info(`Upgraded:
|
|
228348
228324
|
${vulnerabilityFixes.map((fix) => ` ${fix.dependencyName} from ${fix.currentVersion} to ${fix.fixedVersion}`).join("\n")}`);
|
|
228349
228325
|
};
|
|
@@ -228540,7 +228516,7 @@ var upgradePurls = new Command();
|
|
|
228540
228516
|
upgradePurls.name("upgrade-purls").argument("<path>", "File system path to the folder containing the project").argument("<specs...>", "Package upgrade specifications in the format 'purl -> newVersion' (e.g., 'pkg:maven/io.micrometer/micrometer-core@1.10.9 -> 1.15.0')").option("-g, --glob <pattern>", "Glob pattern to filter workspaces by absolute file path").option("-c, --concurrency <concurrency>", "Set the maximum number of concurrent reachability analysis runs. It's recommended to choose a concurrency level that ensures that each analysis run has at least the --memory-limit amount of memory available.", "1").option("-d, --debug", "Enable debug logging", false).option("-s, --silent", "Silence all debug/warning output", false).option("--silent-spinner", "Silence spinner", "CI" in process.env || !process.stdin.isTTY).option("--range-style <style>", 'Range style to use for the output. Currently only "pin" is supported and it only works for npm.').addOption(new Option("--run-without-docker", "Run package managers without using docker").default(process.env.RUN_WITHOUT_DOCKER === "true").hideHelp()).addOption(new Option("--socket-mode", "Use Socket for computing dependency trees").default(process.env.SOCKET_MODE === "true").hideHelp()).version(version2).action(async (path2, specs2, options) => {
|
|
228541
228517
|
process.env.DOCKER_IMAGE_TAG ??= version2;
|
|
228542
228518
|
await withTmpDirectory("upgrade-purls", async (tmpDir) => {
|
|
228543
|
-
const logFile =
|
|
228519
|
+
const logFile = join28(tmpDir, "upgrade-purls.log");
|
|
228544
228520
|
logger.initWinstonLogger(options.debug, logFile);
|
|
228545
228521
|
const upgradeSpecs = specs2.map((spec) => {
|
|
228546
228522
|
const [purl, upgradeVersion] = spec.split("->").map((s6) => s6.trim());
|
|
@@ -228567,7 +228543,7 @@ computeFixesAndUpgradePurlsCmd.name("compute-fixes-and-upgrade-purls").argument(
|
|
|
228567
228543
|
throw new Error('Range style must be "pin"');
|
|
228568
228544
|
}
|
|
228569
228545
|
await withTmpDirectory("compute-fixes-and-upgrade-purls", async (tmpDir) => {
|
|
228570
|
-
const logFile =
|
|
228546
|
+
const logFile = join28(tmpDir, "compute-fixes-and-upgrade-purls.log");
|
|
228571
228547
|
logger.initWinstonLogger(options.debug, logFile);
|
|
228572
228548
|
const output = await computeFixesAndUpgradePurls(path2, options, logFile);
|
|
228573
228549
|
if (options.outputFile) {
|
package/package.json
CHANGED
|
@@ -74735,8 +74735,6 @@ var DotnetCodeAwareVulnerabilityScanner = class _DotnetCodeAwareVulnerabilitySca
|
|
|
74735
74735
|
if (!vulnerablePathsForClass)
|
|
74736
74736
|
continue;
|
|
74737
74737
|
classStacks.push(...vulnerablePathsForClass.map((vulnPath) => {
|
|
74738
|
-
if (vulnPath.length < 2)
|
|
74739
|
-
throw new Error("The path should always have length at least two.");
|
|
74740
74738
|
return vulnPath.map(({ fullyQualifiedName, confidence, packageId }) => ({
|
|
74741
74739
|
package: appPackageIds.has(packageId) ? "<app>" : prettyPrintNugetDependency(parsePackageUrlToNugetDependency(packageId)),
|
|
74742
74740
|
class: fullyQualifiedName,
|
|
@@ -88595,8 +88593,6 @@ var JavaCodeAwareVulnerabilityScanner = class _JavaCodeAwareVulnerabilityScanner
|
|
|
88595
88593
|
if (!vulnerablePathsForClass)
|
|
88596
88594
|
continue;
|
|
88597
88595
|
classStacks.push(...vulnerablePathsForClass.map((vulnPath) => {
|
|
88598
|
-
if (vulnPath.length < 2)
|
|
88599
|
-
throw new Error("The path should always have length at least two.");
|
|
88600
88596
|
return vulnPath.map(({ fullyQualifiedName, confidence, packageId }) => ({
|
|
88601
88597
|
package: appPackageIds.has(packageId) ? "<app>" : prettyPrintMavenDependency(parsePackageUrlToMavenDependency(packageId)),
|
|
88602
88598
|
class: fullyQualifiedName,
|
|
@@ -88630,25 +88626,24 @@ function inferWorkspaceFromManifestPath(manifestFile) {
|
|
|
88630
88626
|
}
|
|
88631
88627
|
async function convertDependencyChain2(dependencyChain, tmpDir) {
|
|
88632
88628
|
async function downloadMavenArtifacts(groupId, artifactId, version3) {
|
|
88633
|
-
const artifactPaths = [];
|
|
88634
88629
|
const packageDir = getPathToPackage(tmpDir, groupId, artifactId, version3);
|
|
88635
88630
|
await mkdir2(packageDir, { recursive: true });
|
|
88636
88631
|
const repositories = await findRepositoriesForMavenPackageAndVersion(groupId, artifactId, version3);
|
|
88637
|
-
|
|
88638
|
-
throw Error("No repository found for package");
|
|
88639
|
-
for (const repository of repositories) {
|
|
88632
|
+
for (const repository of repositories ?? []) {
|
|
88640
88633
|
const packageUrl = getUrlForPackage2(repository, groupId, artifactId, version3);
|
|
88641
88634
|
const artifacts = await findArtifactsForPackageInRemoteRepository(repository, groupId, artifactId, version3);
|
|
88642
88635
|
if (!artifacts)
|
|
88643
88636
|
continue;
|
|
88644
|
-
await
|
|
88637
|
+
const artifactPaths = await asyncMap(artifacts, async (artifact) => {
|
|
88645
88638
|
const artifactUrl = `${packageUrl.endsWith("/") ? packageUrl.slice(0, -1) : packageUrl}/${artifact}`;
|
|
88646
88639
|
const artifactFile = join14(packageDir, artifact);
|
|
88647
|
-
await downloadFile(artifactUrl, artifactFile);
|
|
88648
|
-
|
|
88640
|
+
const success = await downloadFile(artifactUrl, artifactFile);
|
|
88641
|
+
return success ? artifactFile : void 0;
|
|
88649
88642
|
}, 4);
|
|
88643
|
+
if (artifactPaths.every((f2) => f2 !== void 0))
|
|
88644
|
+
return artifactPaths;
|
|
88650
88645
|
}
|
|
88651
|
-
return
|
|
88646
|
+
return void 0;
|
|
88652
88647
|
}
|
|
88653
88648
|
const mavenDependencyChain = await asyncMap(dependencyChain, async (dep) => {
|
|
88654
88649
|
const [groupId, artifactId] = dep.packageName.split(":");
|
|
@@ -88664,8 +88659,10 @@ async function convertSocketArtifacts2(artifacts, tmpDir) {
|
|
|
88664
88659
|
const artifactFile = getPathToArtifact(tmpDir, groupId, artifactId, type, classifier, version3);
|
|
88665
88660
|
await mkdir2(dirname4(artifactFile), { recursive: true });
|
|
88666
88661
|
const repositories = await findRepositoriesForMavenPackageAndVersion(groupId, artifactId, version3);
|
|
88667
|
-
if (!repositories?.length)
|
|
88668
|
-
|
|
88662
|
+
if (!repositories?.length) {
|
|
88663
|
+
logger.warn(`Failed to find repository for maven package ${[groupId, artifactId, type, classifier, version3].filter(Boolean).join(":")}`);
|
|
88664
|
+
return void 0;
|
|
88665
|
+
}
|
|
88669
88666
|
for (const repository of repositories) {
|
|
88670
88667
|
const artifactUrl = getUrlForArtifact(repository, groupId, artifactId, type, classifier, version3);
|
|
88671
88668
|
if (!artifactUrl)
|
|
@@ -88674,6 +88671,7 @@ async function convertSocketArtifacts2(artifacts, tmpDir) {
|
|
|
88674
88671
|
if (succeeded)
|
|
88675
88672
|
return [artifactFile];
|
|
88676
88673
|
}
|
|
88674
|
+
logger.warn(`Failed to download maven package ${[groupId, artifactId, type, classifier, version3].filter(Boolean).join(":")}, repositories tried: ${repositories}`);
|
|
88677
88675
|
return void 0;
|
|
88678
88676
|
}
|
|
88679
88677
|
const deps = {};
|
|
@@ -96279,8 +96277,6 @@ var RustCodeAwareVulnerabilityScanner = class _RustCodeAwareVulnerabilityScanner
|
|
|
96279
96277
|
if (!vulnerablePathsForClass)
|
|
96280
96278
|
continue;
|
|
96281
96279
|
classStacks.push(...vulnerablePathsForClass.map((vulnPath) => {
|
|
96282
|
-
if (vulnPath.length < 2)
|
|
96283
|
-
throw new Error("The path should always have length at least two.");
|
|
96284
96280
|
return vulnPath.map(({ fullyQualifiedName, confidence, packageId }) => ({
|
|
96285
96281
|
package: appPackageIds.has(packageId) ? "<app>" : prettyPrintRustDependency(parsePackageUrlToRustDependency(packageId)),
|
|
96286
96282
|
class: fullyQualifiedName,
|
|
@@ -96328,14 +96324,19 @@ async function convertSocketArtifacts3(artifacts, tmpDir) {
|
|
|
96328
96324
|
const packageFile = join19(tmpDir, `${packageName.toLocaleLowerCase()}-${version3.toLocaleLowerCase()}.crate`);
|
|
96329
96325
|
const success = await downloadFile(packageUrl, packageFile);
|
|
96330
96326
|
if (!success) {
|
|
96331
|
-
logger.
|
|
96332
|
-
|
|
96327
|
+
logger.warn(`Could not download crate ${packageName}@${version3} from crates.io`);
|
|
96328
|
+
return void 0;
|
|
96329
|
+
}
|
|
96330
|
+
try {
|
|
96331
|
+
await execAndLogOnFailure(["tar", "-xzf", packageFile], tmpDir);
|
|
96332
|
+
const packageDir = join19(tmpDir, `${packageName.toLocaleLowerCase()}-${version3.toLocaleLowerCase()}`);
|
|
96333
|
+
const cargoTomlPath = join19(packageDir, "Cargo.toml");
|
|
96334
|
+
const depCrateInfo = await getCrateInfo(cargoTomlPath);
|
|
96335
|
+
return [depCrateInfo.lib];
|
|
96336
|
+
} catch (e) {
|
|
96337
|
+
logger.warn(`Error extracting crate ${packageName}@${version3}: ${e.message ?? "Unknown error"}`);
|
|
96338
|
+
return void 0;
|
|
96333
96339
|
}
|
|
96334
|
-
await execAndLogOnFailure(["tar", "-xzf", packageFile], tmpDir);
|
|
96335
|
-
const packageDir = join19(tmpDir, `${packageName.toLocaleLowerCase()}-${version3.toLocaleLowerCase()}`);
|
|
96336
|
-
const cargoTomlPath = join19(packageDir, "Cargo.toml");
|
|
96337
|
-
const depCrateInfo = await getCrateInfo(cargoTomlPath);
|
|
96338
|
-
return [depCrateInfo.lib];
|
|
96339
96340
|
}
|
|
96340
96341
|
const deps = {};
|
|
96341
96342
|
await asyncForEach(artifacts, async (artifact) => {
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|