JSTQL-JS-Transform/output_testing/168add-build-info-json.js

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');
};