57 lines
1.4 KiB
JavaScript
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))
|
|
})
|
|
}
|