spawn-stack

0.7.0 • Public • Published

spawn-stack

npm version Build Status Build status Coverage Status

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-stack

API

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_process instance, which is enhanced to also be a Promise for a result Object with stdout and stderr properties.

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

Package Sidebar

Install

npm i spawn-stack

Weekly Downloads

36

Version

0.7.0

License

ISC

Unpacked Size

7.5 kB

Total Files

4

Last publish

Collaborators

  • shinnn