]>
git.immae.eu Git - github/fretlink/purs-loader.git/blob - src/compile.js
3 const Promise
= require('bluebird');
5 const spawn
= require('cross-spawn');
7 const debug_
= require('debug');
9 const debug
= debug_('purs-loader');
11 const debugVerbose
= debug_('purs-loader:verbose');
13 const dargs
= require('./dargs');
15 module
.exports
= function compile(psModule
) {
16 const options
= psModule
.options
18 const compileCommand
= options
.psc
|| 'purs';
20 const compileArgs
= (options
.psc
? [] : [ 'compile' ]).concat(dargs(Object
.assign({
22 output: options
.output
,
27 debug('compile %s %O', compileCommand
, compileArgs
)
29 return new Promise((resolve
, reject
) => {
30 debug('compiling PureScript...')
32 const compilation
= spawn(compileCommand
, compileArgs
)
34 compilation
.stderr
.on('data', data
=> {
35 stderr
.push(data
.toString());
38 compilation
.stdout
.on('data', data
=> {
39 debugVerbose(data
.toString());
42 compilation
.on('close', code
=> {
43 debug('finished compiling PureScript.')
46 const errorMessage
= stderr
.join('');
47 if (errorMessage
.length
) {
48 psModule
.emitError(errorMessage
);
54 reject(new Error('compilation failed'))
57 const warningMessage
= stderr
.join('');
58 if (options
.warnings
&& warningMessage
.length
) {
59 psModule
.emitWarning(warningMessage
);