Add option to disable node and v8 flags and pass through app flags
This commit is contained in:
@@ -26,6 +26,11 @@ options('t', {
|
||||
default: '/tmp/nexe',
|
||||
description: 'The path to store node.js sources'
|
||||
}).
|
||||
options('f', {
|
||||
alias: 'flags',
|
||||
description: 'Don\'t parse node and v8 flags, pass through app flags',
|
||||
default: false
|
||||
}).
|
||||
options('v', {
|
||||
alias: 'version',
|
||||
description: 'Display version number'
|
||||
@@ -54,6 +59,7 @@ function toRelative(pt) {
|
||||
require('../lib').compile({
|
||||
input : toRelative(argv.i),
|
||||
output : toRelative(argv.o),
|
||||
flags : argv.f,
|
||||
nodeVersion : argv.r,
|
||||
nodeTempDir : toRelative(argv.t) }, function(error) {
|
||||
|
||||
|
||||
+41
-1
@@ -9,7 +9,7 @@ ProgressBar = require("progress"),
|
||||
child_process = require("child_process"),
|
||||
glob = require("glob"),
|
||||
sardines = require("sardines"),
|
||||
os = require("os"),
|
||||
os = require("os"),
|
||||
spawn = child_process.spawn;
|
||||
|
||||
|
||||
@@ -61,6 +61,17 @@ exports.compile = function (options, complete) {
|
||||
_monkeyPatchNodeConfig(nodeCompiler, next);
|
||||
},
|
||||
|
||||
/**
|
||||
* monkeypatch node.cc to prevent v8 and node from processing CLI flags
|
||||
*/
|
||||
function monkeyPatchNodeCc (next) {
|
||||
if (options.flags) {
|
||||
_monkeyPatchMainCc(nodeCompiler, next);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* compile the node application
|
||||
*/
|
||||
@@ -221,6 +232,7 @@ function _monkeyPatchNodeConfig (compiler, complete) {
|
||||
function (next) {
|
||||
_monkeyPatchMainJs(compiler, next)
|
||||
}
|
||||
|
||||
], complete);
|
||||
}
|
||||
|
||||
@@ -261,6 +273,34 @@ function _monkeyPatchMainJs (compiler, complete) {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
|
||||
function _monkeyPatchMainCc(compiler, complete) {
|
||||
var mainPath = path.join(compiler.dir, "src", "node.cc");
|
||||
_monkeypatch(
|
||||
mainPath,
|
||||
function (content) {
|
||||
return ~content.indexOf('// // TODO use parse opts');
|
||||
},
|
||||
function (content, next) {
|
||||
var lines = content.split('\n');
|
||||
/* These lines exist until v0.11.6 */
|
||||
var startLine = lines.indexOf(' // TODO use parse opts');
|
||||
var endLine = lines.indexOf(' option_end_index = i;');
|
||||
|
||||
for (var i = startLine; i < endLine; i++) {
|
||||
lines[i] = '//' + lines[i];
|
||||
}
|
||||
|
||||
lines[endLine] = ' option_end_index = 1;';
|
||||
lines = lines.join('\n');
|
||||
next(null, lines);
|
||||
},
|
||||
complete
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user