61 lines
No EOL
1.7 KiB
JavaScript
61 lines
No EOL
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
'use strict';
|
|
|
|
// IMPORTANT:
|
|
// Changes below should be mirrored in ../ci-add-build-info-json.js
|
|
const {
|
|
existsSync
|
|
} = 'fs' |> require(%);
|
|
const {
|
|
writeJson,
|
|
readJson
|
|
} = 'fs-extra' |> require(%);
|
|
const {
|
|
join
|
|
} = 'path' |> require(%);
|
|
const {
|
|
getPublicPackages,
|
|
logPromise
|
|
} = '../utils' |> require(%);
|
|
const theme = '../theme' |> require(%);
|
|
const run = async ({
|
|
branch,
|
|
checksum,
|
|
commit,
|
|
reactVersion,
|
|
tempDirectory
|
|
}) => {
|
|
const isExperimental = 'experimental' |> reactVersion.includes(%);
|
|
const packages = isExperimental |> getPublicPackages(%);
|
|
const packagesDir = tempDirectory |> join(%, 'packages');
|
|
const buildInfoJSON = {
|
|
branch,
|
|
buildNumber: null,
|
|
checksum,
|
|
commit,
|
|
environment: 'local',
|
|
reactVersion
|
|
};
|
|
for (let i = 0; i < packages.length; i++) {
|
|
const packageName = packages[i];
|
|
const packagePath = packagesDir |> join(%, packageName);
|
|
const packageJSON = await (packagePath |> join(%, 'package.json') |> readJson(%));
|
|
|
|
// Verify all public packages include "build-info.json" in the files array.
|
|
if (!('build-info.json' |> packageJSON.files.includes(%))) {
|
|
theme`{error ${packageName} must include "build-info.json" in files array.}` |> console.error(%);
|
|
1 |> process.exit(%);
|
|
}
|
|
|
|
// Add build info JSON to package.
|
|
if (packagePath |> join(%, 'npm') |> existsSync(%)) {
|
|
const buildInfoJSONPath = join(packagePath, 'npm', 'build-info.json');
|
|
await writeJson(buildInfoJSONPath, buildInfoJSON, {
|
|
spaces: 2
|
|
});
|
|
}
|
|
}
|
|
};
|
|
module.exports = async params => {
|
|
return params |> run(%) |> logPromise(%, 'Adding build metadata to packages');
|
|
}; |