Skip to content

Commit 9948879

Browse files
author
Raulo Erwan.
committed
fix(command): extract integrity spec argument
1 parent 51ffe50 commit 9948879

4 files changed

Lines changed: 47 additions & 20 deletions

File tree

bin/index.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@ catch {
99
}
1010

1111
// Import Node.js Dependencies
12-
import path from "node:path";
1312
import { createRequire } from "node:module";
13+
import path from "node:path";
1414
import { fileURLToPath } from "node:url";
1515

1616
// Import Third-party Dependencies
17-
import sade from "sade";
18-
import semver from "semver";
1917
import * as i18n from "@nodesecure/i18n";
20-
import * as vulnera from "@nodesecure/vulnera";
2118
import { loadRegistryURLFromLocalSystem } from "@nodesecure/npm-registry-sdk";
19+
import * as vulnera from "@nodesecure/vulnera";
20+
import sade from "sade";
21+
import semver from "semver";
2222

2323
// Import Internal Dependencies
2424
import * as commands from "../src/commands/index.js";
@@ -135,8 +135,9 @@ prog
135135
.action(commands.cache.main);
136136

137137
prog
138-
.command("extract integrity [spec]")
138+
.command("extract integrity <spec>")
139139
.describe(i18n.getTokenSync("cli.commands.extractIntegrity.desc"))
140+
.example("nsecure extract integrity lodash@^4.1.2")
140141
.action(commands.extractIntegrity.main);
141142

142143
prog.parse(process.argv);

i18n/english.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,10 @@ const cli = {
7878
cleared: "Cache cleared successfully!"
7979
},
8080
extractIntegrity: {
81-
desc: "Extract the integrity of a package from its manifest and tarball and compare the two integrities if different from one another."
81+
desc: "Extract the integrity of a package from its manifest and tarball and compare the two integrities if different from one another.",
82+
missingSpecVersion: tS`You must specify a version for '${0}' package.`,
83+
invalidSpec: tS`The package spec '${0}' is invalid.`,
84+
specNotFound: tS`The package spec '${0}' could not be found from the npm registry.`
8285
}
8386
},
8487
startHttp: {

i18n/french.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,10 @@ const cli = {
7878
cleared: "Cache nettoyé avec succès !"
7979
},
8080
extractIntegrity: {
81-
desc: "Extraire l'intégrité d'un paquet à partir de son manifeste et du tarball et comparer les deux intégrités si elles sont différentes."
81+
desc: "Extraire l'intégrité d'un paquet à partir de son manifeste et du tarball et comparer les deux intégrités si elles sont différentes.",
82+
missingSpecVersion: tS`Vous devez spécifier une version pour le package '${0}'.`,
83+
invalidSpec: tS`La spécification '${0}' est invalide.`,
84+
specNotFound: tS`La spécification '${0}' n'a pas pu être trouvée dans le registre npm.`
8285
}
8386
},
8487
startHttp: {

src/commands/extract-integrity.js

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,49 @@ import os from "node:os";
44
import path from "node:path";
55

66
// Import Third-party Dependencies
7-
import * as npmRegistrySDK from "@nodesecure/npm-registry-sdk";
8-
import { diff } from "json-diff-ts";
9-
import { tarball } from "@nodesecure/scanner";
7+
import * as i18n from "@nodesecure/i18n";
8+
109
import {
11-
parseNpmSpec,
12-
packageJSONIntegrityHash
10+
packageJSONIntegrityHash,
11+
parseNpmSpec
1312
} from "@nodesecure/mama";
13+
import * as npmRegistrySDK from "@nodesecure/npm-registry-sdk";
14+
import { tarball } from "@nodesecure/scanner";
15+
import { diff } from "json-diff-ts";
16+
17+
// Import Internal Dependencies
18+
import kleur from "../utils/styleText.js";
1419

1520
export async function main(
1621
npmPackageSpec
1722
) {
1823
const parsedPackageSpec = parseNpmSpec(npmPackageSpec);
1924
if (!parsedPackageSpec) {
20-
throw new Error(`Invalid npm spec: ${npmPackageSpec}`);
25+
console.log(kleur.red().bold(` [!] ${i18n.getTokenSync("cli.commands.extractIntegrity.invalidSpec", npmPackageSpec)}\n`));
26+
process.exit(1);
27+
}
28+
29+
const { name, semver } = parsedPackageSpec;
30+
if (!semver) {
31+
console.log(kleur.red().bold(` [!] ${i18n.getTokenSync("cli.commands.extractIntegrity.missingSpecVersion", name)}\n`));
32+
process.exit(1);
33+
}
34+
35+
let packumentVersion;
36+
try {
37+
packumentVersion = await npmRegistrySDK.packumentVersion(
38+
name,
39+
semver,
40+
{
41+
token: process.env.NODE_SECURE_TOKEN
42+
}
43+
);
44+
}
45+
catch (error) {
46+
console.log(kleur.yellow().bold(` [!] ${i18n.getTokenSync("cli.commands.extractIntegrity.specNotFound", npmPackageSpec)}\n`));
47+
process.exit(1);
2148
}
2249

23-
const packumentVersion = await npmRegistrySDK.packumentVersion(
24-
parsedPackageSpec.name,
25-
parsedPackageSpec.semver,
26-
{
27-
token: process.env.NODE_SECURE_TOKEN
28-
}
29-
);
3050
const remote = packageJSONIntegrityHash(
3151
packumentVersion,
3252
{ isFromRemoteRegistry: true }

0 commit comments

Comments
 (0)