spawn-stack v0.7.0
spawn-stack
Spawn a new process using stack command with the given arguments
const spawnStack = require('spawn-stack');
spawnStack(['--version']).then(result => {
result.output; //=> 'Version 1.7.1 x86_64 ...'
});Installation
Make sure stack command is installed in your $PATH, then install spawn-stack via npm CLI.
npm install spawn-stackAPI
const spawnStack = require('spawn-stack');spawnStack(args , options)
args: Array<string> (command line arguments passed to stack command)
options: Object (execa options, with preferLocal defaulting to false)
Return: ChildProcess
It returns the same value as execa's:
a
child_processinstance, which is enhanced to also be aPromisefor a resultObjectwithstdoutandstderrproperties.
On POSIX, --allow-different-user flag will be automatically enabled to prevent file permission problems, unless --no-allow-different-user flag is explicitly provided.
process.platform !== 'win32'; //=> true
spawnStack(['--numeric-version']).then(result => {
result.cmd; // 'stack --allow-different-user --numeric-version'
});
spawnStack(['--no-allow-different-user', '--numeric-version']).then(result => {
result.cmd; // 'stack --no-allow-different-user --numeric-version'
});The return value also has Symbol.observable method that returns a zen-observable instance passing each line of stderr to its Subscription. That means you can convert the return value into an Observable by using Observable.from.
const Observable = require('zen-observable');
const spawnStack = require('spawn-stack');
const cp = spawnStack(['setup', '8.2.1']);
Observable.from(cp).subscribe({
next(line) {
console.log(line);
// stack will use a sandboxed GHC it installed ...
},
complete() {
console.log('Done.')
}
});License
ISC License © 2017 - 2018 Shinnosuke Watanabe