diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-12-01 19:00:09 +0100 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-12-01 19:00:09 +0100 |
commit | 9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d (patch) | |
tree | 4368f9e4cb2d5b93a956c085337e45cb70f1e331 /nixpkgs/pkgs/build-support/node/fetch-yarn-deps/index.js | |
parent | a9cbfb6941b47d6f50129e6e36927882392daed7 (diff) | |
parent | 2344fe1da14cb08b0c18743b207995f9b8597915 (diff) | |
download | nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.gz nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.bz2 nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.lz nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.xz nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.zst nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.zip |
Merge https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/pkgs/build-support/node/fetch-yarn-deps/index.js')
-rwxr-xr-x | nixpkgs/pkgs/build-support/node/fetch-yarn-deps/index.js | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/nixpkgs/pkgs/build-support/node/fetch-yarn-deps/index.js b/nixpkgs/pkgs/build-support/node/fetch-yarn-deps/index.js index de2a09ee9041..e60fdeb54330 100755 --- a/nixpkgs/pkgs/build-support/node/fetch-yarn-deps/index.js +++ b/nixpkgs/pkgs/build-support/node/fetch-yarn-deps/index.js @@ -88,10 +88,17 @@ const isGitUrl = pattern => { } const downloadPkg = (pkg, verbose) => { - const [ name, spec ] = pkg.key.split('@', 2); - if (spec.startsWith('file:')) { - console.info(`ignoring relative file:path dependency "${spec}"`) + const fileMarker = '@file:' + const split = pkg.key.split(fileMarker) + if (split.length == 2) { + console.info(`ignoring lockfile entry "${split[0]}" which points at path "${split[1]}"`) return + } else if (split.length > 2) { + throw new Error(`The lockfile entry key "${pkg.key}" contains "${fileMarker}" more than once. Processing is not implemented.`) + } + + if (pkg.resolved === undefined) { + throw new Error(`The lockfile entry with key "${pkg.key}" cannot be downloaded because it is missing the "resolved" attribute, which should contain the URL to download from. The lockfile might be invalid.`) } const [ url, hash ] = pkg.resolved.split('#') @@ -133,19 +140,10 @@ const performParallel = tasks => { const prefetchYarnDeps = async (lockContents, verbose) => { const lockData = lockfile.parse(lockContents) - const tasks = Object.values( + await performParallel( Object.entries(lockData.object) - .map(([key, value]) => { - return { key, ...value } - }) - .reduce((out, pkg) => { - out[pkg.resolved] = pkg - return out - }, {}) + .map(([key, value]) => () => downloadPkg({ key, ...value }, verbose)) ) - .map(pkg => () => downloadPkg(pkg, verbose)) - - await performParallel(tasks) await fs.promises.writeFile('yarn.lock', lockContents) if (verbose) console.log('Done') } |