X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FPursLoader%2FChildProcess.purs;h=3bd960b784b12f6016f489ca020c91fd06a205ae;hb=03b840cb5fb8ff5217fefc9e1240a3131db309fc;hp=34558fa74504b44f3343a64914bd718a5e0916bb;hpb=fa01c5a4cb42d80ac147dc5ab512a0795dbe14da;p=github%2Ffretlink%2Fpurs-loader.git diff --git a/src/PursLoader/ChildProcess.purs b/src/PursLoader/ChildProcess.purs index 34558fa..3bd960b 100644 --- a/src/PursLoader/ChildProcess.purs +++ b/src/PursLoader/ChildProcess.purs @@ -3,6 +3,8 @@ module PursLoader.ChildProcess , spawn ) where +import Prelude (Unit(), ($)) + import Control.Monad.Aff (Aff(), makeAff) import Control.Monad.Eff (Eff()) import Control.Monad.Eff.Exception (Error()) @@ -11,46 +13,11 @@ import Data.Function foreign import data ChildProcess :: ! -spawn :: forall eff. String -> [String] -> Aff (cp :: ChildProcess | eff) String +spawn :: forall eff. String -> Array String -> Aff (cp :: ChildProcess | eff) String spawn command args = makeAff $ runFn4 spawnFn command args -foreign import spawnFn """ -function spawnFn(command, args, errback, callback) { - return function(){ - var child_process = require('child_process'); - - var process = child_process.spawn(command, args); - - var stdout = new Buffer(0); - - var stderr = new Buffer(0); - - process.stdout.on('data', function(data){ - stdout = Buffer.concat([stdout, new Buffer(data)]); - }); - - process.stderr.on('data', function(data){ - stderr = Buffer.concat([stderr, new Buffer(data)]); - }); - - process.on('close', function(code){ - var chalk = require('chalk'); - - var output = stdout.toString('utf-8'); - - var error = stderr.toString('utf-8'); - - if (error.length > 0) { - console.error('\n' + chalk.red('*') + ' ' + error); - } - - if (code !== 0) errback(new Error('Process terminated with code ' + code))(); - else callback(output)(); - }); - }; -} -""" :: forall eff. Fn4 String - [String] - (Error -> Eff (cp :: ChildProcess | eff) Unit) - (String -> Eff (cp :: ChildProcess | eff) Unit) - (Eff (cp :: ChildProcess | eff) Unit) +foreign import spawnFn :: forall eff. Fn4 String + (Array String) + (Error -> Eff (cp :: ChildProcess | eff) Unit) + (String -> Eff (cp :: ChildProcess | eff) Unit) + (Eff (cp :: ChildProcess | eff) Unit)