Files
nexe/src/nexe.js
T
2017-06-26 20:01:53 -05:00

57 lines
1.4 KiB
JavaScript

const
{ compose } = require('app-builder'),
{ bundle } = require('./bundle'),
{ NexeCompiler } = require('./compiler'),
{ options } = require('./options'),
{ cli } = require('./cli'),
{ download } = require('./download'),
{ artifacts } = require('./artifacts'),
{ patches } = require('./patches'),
{ EOL } = require('os'),
{ coroutine, Promise } = require('bluebird'),
{ logger } = require('./logger')
function wrap (fns) {
return [].concat(...fns).map(fn => {
return fn.constructor.name === 'GeneratorFunction'
? coroutine(fn) : fn
})
}
function compile (compilerOptions, callback) {
const compiler = new NexeCompiler(compilerOptions)
compiler.log.verbose('Compiler options:' +
EOL + JSON.stringify(compiler.options, null, 4)
)
const nexe = compose(wrap([
bundle,
cli,
download,
(nexeCompiler, next) => {
return next().then(() => {
return nexeCompiler.buildAsync()
})
},
artifacts,
patches,
compiler.options.patches
]))
return Promise.resolve(nexe(compiler)).asCallback(callback)
}
module.exports.options = options
module.exports.compile = compile
module.exports.isNexe = function isNexe (callback) {
return Promise.resolve(Boolean(process.__nexe)).asCallback(callback)
}
module.exports.resources
if (require.main === module || process.__nexe) {
compile(options).catch((e) => {
logger.error(e.stack, () => process.exit(1))
})
}