50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import { EOL } from 'os'
|
|
import { compose } from 'app-builder'
|
|
import { NexeCompiler, NexeError } from './compiler'
|
|
import { normalizeOptions, NexeOptions, NexePatch } from './options'
|
|
import resource from './steps/resource'
|
|
import clean from './steps/clean'
|
|
import cli from './steps/cli'
|
|
import bundle from './steps/bundle'
|
|
import download from './steps/download'
|
|
import shim from './steps/shim'
|
|
import artifacts from './steps/artifacts'
|
|
import patches from './patches'
|
|
|
|
async function compile(
|
|
compilerOptions?: Partial<NexeOptions>,
|
|
callback?: (err: Error | null) => void
|
|
) {
|
|
let error = null,
|
|
options: NexeOptions | null = null,
|
|
compiler: NexeCompiler | null = null
|
|
|
|
try {
|
|
options = normalizeOptions(compilerOptions)
|
|
compiler = new NexeCompiler(options)
|
|
await compose(
|
|
clean,
|
|
resource,
|
|
cli,
|
|
bundle,
|
|
shim,
|
|
download,
|
|
options.build ? [artifacts, ...patches, ...(options.patches as NexePatch[])] : [],
|
|
options.plugins as NexePatch[]
|
|
)(compiler)
|
|
} catch (e) {
|
|
error = e
|
|
}
|
|
|
|
if (error) {
|
|
compiler && compiler.quit(error)
|
|
if (callback) return callback(error)
|
|
return Promise.reject(error)
|
|
}
|
|
|
|
if (callback) callback(null)
|
|
}
|
|
|
|
export { compile, NexeCompiler }
|
|
export { argv, version, NexeOptions, help } from './options'
|