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