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:
committed by
Facebook Github Bot
parent
57a24769e8
commit
939cc531e2
@@ -15,16 +15,19 @@ const {
|
|||||||
compile,
|
compile,
|
||||||
compileDefaultPlugins,
|
compileDefaultPlugins,
|
||||||
getVersionNumber,
|
getVersionNumber,
|
||||||
|
genMercurialRevision,
|
||||||
} = require('./build-utils.js');
|
} = require('./build-utils.js');
|
||||||
|
|
||||||
const PLUGINS_FOLDER_NAME = 'plugins';
|
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) =>
|
return new Promise((resolve, reject) =>
|
||||||
lineReplace({
|
lineReplace({
|
||||||
file: path.join(dir, 'bundle.js'),
|
file: path.join(dir, 'bundle.js'),
|
||||||
line: 1,
|
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,
|
addNewLine: true,
|
||||||
callback: resolve,
|
callback: resolve,
|
||||||
}),
|
}),
|
||||||
@@ -52,7 +55,7 @@ async function createZip(buildDir, distDir, targets) {
|
|||||||
|
|
||||||
// write zip file
|
// write zip file
|
||||||
zip.outputStream
|
zip.outputStream
|
||||||
.pipe(fs.createWriteStream(path.join(distDir, `Flipper-headless.zip`)))
|
.pipe(fs.createWriteStream(path.join(distDir, 'Flipper-headless.zip')))
|
||||||
.on('close', resolve);
|
.on('close', resolve);
|
||||||
zip.end();
|
zip.end();
|
||||||
});
|
});
|
||||||
@@ -88,7 +91,8 @@ async function createZip(buildDir, distDir, targets) {
|
|||||||
console.log('Created build directory', buildDir);
|
console.log('Created build directory', buildDir);
|
||||||
await compile(buildDir, path.join(__dirname, '..', 'headless', 'index.js'));
|
await compile(buildDir, path.join(__dirname, '..', 'headless', 'index.js'));
|
||||||
const versionNumber = getVersionNumber();
|
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 compileDefaultPlugins(path.join(buildDir, PLUGINS_FOLDER_NAME));
|
||||||
await createBinary([
|
await createBinary([
|
||||||
path.join(buildDir, 'bundle.js'),
|
path.join(buildDir, 'bundle.js'),
|
||||||
|
|||||||
@@ -7,14 +7,15 @@
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const builder = require('electron-builder');
|
const builder = require('electron-builder');
|
||||||
const cp = require('child-process-es6-promise');
|
|
||||||
const Platform = builder.Platform;
|
const Platform = builder.Platform;
|
||||||
|
const cp = require('child-process-es6-promise');
|
||||||
const {
|
const {
|
||||||
buildFolder,
|
buildFolder,
|
||||||
compile,
|
compile,
|
||||||
die,
|
die,
|
||||||
compileDefaultPlugins,
|
compileDefaultPlugins,
|
||||||
getVersionNumber,
|
getVersionNumber,
|
||||||
|
genMercurialRevision,
|
||||||
} = require('./build-utils.js');
|
} = require('./build-utils.js');
|
||||||
|
|
||||||
function generateManifest(versionNumber) {
|
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) {
|
function modifyPackageManifest(buildFolder, versionNumber, hgRevision) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log('Creating package.json manifest');
|
console.log('Creating package.json manifest');
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ const compilePlugins = require('../static/compilePlugins');
|
|||||||
const tmp = require('tmp');
|
const tmp = require('tmp');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
|
const cp = require('child-process-es6-promise');
|
||||||
|
|
||||||
function die(err) {
|
function die(err) {
|
||||||
console.error(err.stack);
|
console.error(err.stack);
|
||||||
@@ -98,10 +99,19 @@ function getVersionNumber() {
|
|||||||
return version;
|
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 = {
|
module.exports = {
|
||||||
buildFolder,
|
buildFolder,
|
||||||
compile,
|
compile,
|
||||||
die,
|
die,
|
||||||
compileDefaultPlugins,
|
compileDefaultPlugins,
|
||||||
getVersionNumber,
|
getVersionNumber,
|
||||||
|
genMercurialRevision,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ const getPackageJSON = async () => {
|
|||||||
|
|
||||||
export const readCurrentRevision: () => Promise<?string> = lodash.memoize(
|
export const readCurrentRevision: () => Promise<?string> = lodash.memoize(
|
||||||
async () => {
|
async () => {
|
||||||
|
// This is provided as part of the bundling process for headless.
|
||||||
|
if (global.__REVISION__) {
|
||||||
|
return global.__REVISION__;
|
||||||
|
}
|
||||||
const json = await getPackageJSON();
|
const json = await getPackageJSON();
|
||||||
return json.revision;
|
return json.revision;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -11,7 +11,8 @@
|
|||||||
},
|
},
|
||||||
app: {
|
app: {
|
||||||
getVersion: function() {return global.__VERSION__ || '1';},
|
getVersion: function() {return global.__VERSION__ || '1';},
|
||||||
getName: function() {return '';}
|
getName: function() {return '';},
|
||||||
|
getAppPath: function() {return process.cwd();}
|
||||||
},
|
},
|
||||||
shell: {
|
shell: {
|
||||||
openExternal: function() {}
|
openExternal: function() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user