#!/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); } } ); }