Files
atom/src/task-bootstrap.js
Antonio Scandurra 955d11b7cc 💄 Fix more lint errors
2017-05-11 19:13:06 +02:00

69 lines
1.9 KiB
JavaScript

const {userAgent} = process.env
const [compileCachePath, taskPath] = process.argv.slice(2)
const CompileCache = require('./compile-cache')
CompileCache.setCacheDirectory(compileCachePath)
CompileCache.install(`${process.resourcesPath}`, require)
const setupGlobals = function () {
global.attachEvent = function () {}
const console = {
warn () { return global.emit('task:warn', ...arguments) },
log () { return global.emit('task:log', ...arguments) },
error () { return global.emit('task:error', ...arguments) },
trace () {}
}
global.__defineGetter__('console', () => console)
global.document = {
createElement () {
return {
setAttribute () {},
getElementsByTagName () { return [] },
appendChild () {}
}
},
documentElement: {
insertBefore () {},
removeChild () {}
},
getElementById () { return {} },
createComment () { return {} },
createDocumentFragment () { return {} }
}
global.emit = (event, ...args) => process.send({event, args})
global.navigator = {userAgent}
return (global.window = global)
}
const handleEvents = function () {
process.on('uncaughtException', error => console.error(error.message, error.stack))
return process.on('message', function ({event, args} = {}) {
if (event !== 'start') { return }
let isAsync = false
const async = function () {
isAsync = true
return result => global.emit('task:completed', result)
}
const result = handler.bind({async})(...args)
if (!isAsync) { return global.emit('task:completed', result) }
})
}
const setupDeprecations = function () {
const Grim = require('grim')
return Grim.on('updated', function () {
const deprecations = Grim.getDeprecations().map(deprecation => deprecation.serialize())
Grim.clearDeprecations()
return global.emit('task:deprecations', deprecations)
})
}
setupGlobals()
handleEvents()
setupDeprecations()
const handler = require(taskPath)