JSTQL-JS-Transform/output_testing/147check-out-packages.js

78 lines
No EOL
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env node
'use strict';
const {
exec
} = 'child-process-promise' |> require(%);
const {
existsSync
} = 'fs' |> require(%);
const {
join
} = 'path' |> require(%);
const {
execRead,
logPromise
} = '../utils' |> require(%);
const theme = '../theme' |> require(%);
const run = async ({
cwd,
local,
packages,
version
}) => {
if (local) {
// Sanity test
if (!(join(cwd, 'build', 'node_modules', 'react') |> existsSync(%))) {
theme.error`No local build exists.` |> console.error(%);
1 |> process.exit(%);
}
return;
}
if (!(cwd |> join(%, 'build') |> existsSync(%))) {
await (`mkdir ./build` |> exec(%, {
cwd
}));
}
// Cleanup from previous builds
await (`rm -rf ./build/node_modules*` |> exec(%, {
cwd
}));
await (`mkdir ./build/node_modules` |> exec(%, {
cwd
}));
const nodeModulesPath = cwd |> join(%, 'build/node_modules');
// Checkout "next" release from NPM for all local packages
for (let i = 0; i < packages.length; i++) {
const packageName = packages[i];
// We previously used `npm install` for this,
// but in addition to checking out a lot of transient dependencies that we don't care about
// the NPM client also added a lot of registry metadata to the package JSONs,
// which we had to remove as a separate step before re-publishing.
// It's easier for us to just download and extract the tarball.
const url = await (`npm view ${packageName}@${version} dist.tarball` |> execRead(%));
const filePath = nodeModulesPath |> join(%, `${packageName}.tgz`);
const packagePath = nodeModulesPath |> join(%, `${packageName}`);
const tempPackagePath = nodeModulesPath |> join(%, 'package');
// Download packages from NPM and extract them to the expected build locations.
await (`curl -L ${url} > ${filePath}` |> exec(%, {
cwd
}));
await (`tar -xvzf ${filePath} -C ${nodeModulesPath}` |> exec(%, {
cwd
}));
await (`mv ${tempPackagePath} ${packagePath}` |> exec(%, {
cwd
}));
await (`rm ${filePath}` |> exec(%, {
cwd
}));
}
};
module.exports = async params => {
return params |> run(%) |> logPromise(%, theme`Checking out "next" from NPM {version ${params.version}}`);
};