X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FPsc.js;h=ffa32b714a69c43bcf8954c8b8f9bb2e35d71c78;hb=4305f5b0053d6fd2887b364c5da0a1ca6c06fc54;hp=0aa9fe2f90c5e2929d060fdce739c8c315259008;hpb=c3a7c4d64f4fbffc66297f29296583c3b00a462f;p=github%2Ffretlink%2Fpurs-loader.git diff --git a/src/Psc.js b/src/Psc.js index 0aa9fe2..ffa32b7 100644 --- a/src/Psc.js +++ b/src/Psc.js @@ -29,21 +29,33 @@ function compile(psModule) { debug('spawning compiler %s %o', options.psc, args) return (new Promise((resolve, reject) => { - debug('\nCompiling PureScript...') + debug('compiling PureScript...') const compilation = spawn(options.psc, args) - compilation.stdout.on('data', data => stderr.push(data.toString())) - compilation.stderr.on('data', data => stderr.push(data.toString())) + compilation.stderr.on('data', data => { + stderr.push(data.toString()); + }); compilation.on('close', code => { - debug('Finished compiling PureScript.') + debug('finished compiling PureScript.') cache.compilationFinished = true if (code !== 0) { - cache.errors = stderr.join('') - reject(new Error('compilation failed')) + const errorMessage = stderr.join(''); + if (errorMessage.length) { + psModule.emitError(errorMessage); + } + if (options.watch) { + resolve(psModule); + } + else { + reject(new Error('compilation failed')) + } } else { - cache.warnings = stderr.join('') + const warningMessage = stderr.join(''); + if (options.warnings && warningMessage.length) { + psModule.emitWarning(warningMessage); + } resolve(psModule) } }) @@ -74,15 +86,19 @@ function bundle(options, cache) { debug('spawning bundler %s %o', options.pscBundle, args.join(' ')) return (new Promise((resolve, reject) => { - debug('Bundling PureScript...') + debug('bundling PureScript...') const compilation = spawn(options.pscBundle, args) compilation.stdout.on('data', data => stdout.push(data.toString())) compilation.stderr.on('data', data => stderr.push(data.toString())) compilation.on('close', code => { + debug('finished bundling PureScript.') if (code !== 0) { - cache.errors = (cache.errors || '') + stderr.join('') + const errorMessage = stderr.join(''); + if (errorMessage.length) { + psModule.emitError(errorMessage); + } return reject(new Error('bundling failed')) } cache.bundle = stderr