110 lines
2.3 KiB
JavaScript
Executable File
110 lines
2.3 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
var path = require('path'),
|
|
fs = require('fs'),
|
|
nexe = require('../lib'),
|
|
_log = require("../lib/log"),
|
|
cli = require('yargs').
|
|
usage('Usage: $0 -i [sources] -o [binary]').
|
|
options('i', {
|
|
demand: true,
|
|
alias: 'input',
|
|
desc: 'The entry javascript files',
|
|
default: process.cwd()
|
|
}).
|
|
options('o', {
|
|
demand: true,
|
|
alias: 'output',
|
|
desc: 'The output binary',
|
|
default: "out.nex"
|
|
}).
|
|
options('r', {
|
|
alias: 'runtime',
|
|
default: 'latest',
|
|
description: 'The node.js runtime to use'
|
|
}).
|
|
options('t', {
|
|
alias: 'temp',
|
|
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('d', {
|
|
alias: 'debug',
|
|
default: false,
|
|
description: 'generate and use source maps, large file size'
|
|
}).
|
|
options('j', {
|
|
alias: 'jsFlags',
|
|
default: false,
|
|
description: 'v8 flags for runtime'
|
|
}).
|
|
options('v', {
|
|
alias: 'version',
|
|
description: 'Display version number'
|
|
}).
|
|
options('p', {
|
|
alias: 'python',
|
|
description: 'Set path of python to use.',
|
|
default: 'python'
|
|
}).
|
|
options('F', {
|
|
alias: 'framework',
|
|
description: 'Set the framework to use',
|
|
default: 'nodejs'
|
|
});
|
|
|
|
var argv = cli.argv;
|
|
if (argv.h || argv.help) {
|
|
cli.showHelp();
|
|
process.exit();
|
|
} else if (argv.v || argv.version) {
|
|
var pkginfo = require('../package.json');
|
|
console.log(pkginfo.version);
|
|
process.exit();
|
|
}
|
|
|
|
/**
|
|
* TODO: Support network shares?
|
|
**/
|
|
function toAbsolute(pt) {
|
|
if (pt.substr(0, 1) == "/") return pt; // for *nix "/"
|
|
if (pt.substr(0, 2) == "\\\\") return pt; // for windows "\\"
|
|
if (pt.substr(1, 3) == ":/") return pt; // for windows "c:/"
|
|
|
|
// otheerwise...
|
|
return path.join(process.cwd(), pt);
|
|
}
|
|
|
|
if (fs.lstatSync(argv.i).isDirectory()) {
|
|
opts = nexe.package(path.join(argv.i, "package.json"), argv);
|
|
nexe.compile(opts, function(error) {
|
|
if (error) {
|
|
return console.log(error.message);
|
|
}
|
|
});
|
|
} else {
|
|
/**
|
|
* Call the core
|
|
**/
|
|
nexe.compile({
|
|
input: require.resolve(toAbsolute(argv.i)),
|
|
output: toAbsolute(argv.o),
|
|
flags: argv.f,
|
|
nodeVersion: argv.r,
|
|
python: argv.python,
|
|
nodeTempDir: toAbsolute(argv.t),
|
|
framework: argv.F
|
|
},
|
|
function(error) {
|
|
if (error) {
|
|
return console.log(error.message);
|
|
}
|
|
}
|
|
);
|
|
}
|