Fix revision bundling

Summary:
This fixes headless not terminating due to the `package.json` not being readable.
I instead write this to the `global` object in the same way that the version is
set.

Reviewed By: jknoxville

Differential Revision: D14579316

fbshipit-source-id: 238afe912366c423552305e120088f4abac4c20b
This commit is contained in:
Pascal Hartig
2019-03-22 10:35:30 -07:00
committed by Facebook Github Bot
parent 57a24769e8
commit 939cc531e2
5 changed files with 26 additions and 14 deletions

View File

@@ -15,16 +15,19 @@ const {
compile,
compileDefaultPlugins,
getVersionNumber,
genMercurialRevision,
} = require('./build-utils.js');
const PLUGINS_FOLDER_NAME = 'plugins';
function preludeBundle(dir, versionNumber) {
function preludeBundle(dir, versionNumber, buildRevision) {
const revisionStr =
buildRevision == null ? '' : `global.__REVISION__="${buildRevision}";`;
return new Promise((resolve, reject) =>
lineReplace({
file: path.join(dir, 'bundle.js'),
line: 1,
text: `var __DEV__=false; global.electronRequire = require; global.performance = require("perf_hooks").performance;global.__VERSION__="${versionNumber}";`,
text: `var __DEV__=false; global.electronRequire = require; global.performance = require("perf_hooks").performance;global.__VERSION__="${versionNumber}";${revisionStr}`,
addNewLine: true,
callback: resolve,
}),
@@ -52,7 +55,7 @@ async function createZip(buildDir, distDir, targets) {
// write zip file
zip.outputStream
.pipe(fs.createWriteStream(path.join(distDir, `Flipper-headless.zip`)))
.pipe(fs.createWriteStream(path.join(distDir, 'Flipper-headless.zip')))
.on('close', resolve);
zip.end();
});
@@ -88,7 +91,8 @@ async function createZip(buildDir, distDir, targets) {
console.log('Created build directory', buildDir);
await compile(buildDir, path.join(__dirname, '..', 'headless', 'index.js'));
const versionNumber = getVersionNumber();
await preludeBundle(buildDir, versionNumber);
const buildRevision = await genMercurialRevision();
await preludeBundle(buildDir, versionNumber, buildRevision);
await compileDefaultPlugins(path.join(buildDir, PLUGINS_FOLDER_NAME));
await createBinary([
path.join(buildDir, 'bundle.js'),

View File

@@ -7,14 +7,15 @@
const path = require('path');
const fs = require('fs-extra');
const builder = require('electron-builder');
const cp = require('child-process-es6-promise');
const Platform = builder.Platform;
const cp = require('child-process-es6-promise');
const {
buildFolder,
compile,
die,
compileDefaultPlugins,
getVersionNumber,
genMercurialRevision,
} = require('./build-utils.js');
function generateManifest(versionNumber) {
@@ -31,14 +32,6 @@ function generateManifest(versionNumber) {
);
}
// Asynchronously determine current mercurial revision as string or `null` in case of any error.
function genMercurialRevision() {
return cp
.spawn('hg', ['log', '-r', '.', '-T', '{node}'])
.catch(err => null)
.then(res => (res && res.stdout) || null);
}
function modifyPackageManifest(buildFolder, versionNumber, hgRevision) {
// eslint-disable-next-line no-console
console.log('Creating package.json manifest');

View File

@@ -10,6 +10,7 @@ const compilePlugins = require('../static/compilePlugins');
const tmp = require('tmp');
const path = require('path');
const fs = require('fs-extra');
const cp = require('child-process-es6-promise');
function die(err) {
console.error(err.stack);
@@ -98,10 +99,19 @@ function getVersionNumber() {
return version;
}
// Asynchronously determine current mercurial revision as string or `null` in case of any error.
function genMercurialRevision() {
return cp
.spawn('hg', ['log', '-r', '.', '-T', '{node}'])
.catch(err => null)
.then(res => (res && res.stdout) || null);
}
module.exports = {
buildFolder,
compile,
die,
compileDefaultPlugins,
getVersionNumber,
genMercurialRevision,
};