comandante

spawn() that returns a duplex stream and emits errors with stderr data on non-zero exit codes

Usage no npm install needed!

<script type="module">
  import comandante from 'https://cdn.skypack.dev/comandante';
</script>

README

commandante

Spawn commands returning a duplex stream. Emit stderr when the command exits with a non-zero code.

build status

example

var run = require('commandante');
run('git', [ 'log' ]).pipe(process.stdout);

in a git directory we get:

$ node example/log.js | head -n3
commit ae5045cce4980a87b7151cfe91bc5889951aae39
Author: James Halliday <mail@substack.net>
Date:   Tue Oct 2 09:08:18 2012 -0700

in a non-git directory we get:

events.js:66
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: non-zero exit code 128: fatal: Not a git repository (or any of the parent directories): .git

    at ChildProcess.<anonymous> (/home/substack/projects/comandante/index.js:19:27)
    at ChildProcess.EventEmitter.emit (events.js:91:17)
    at maybeClose (child_process.js:634:16)
    at Socket.ChildProcess.spawn.stdin (child_process.js:805:11)
    at Socket.EventEmitter.emit (events.js:88:17)
    at Socket._destroy.destroyed (net.js:358:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

methods

var commandante = require('commandante')

commandante(cmd, args, opts={})

Spawn a new process like require('child_process').spawn(), except the return value is a duplex stream combining stdoutandstdin`.

If the process exits with a non-zero status, emit an 'error' event with the stderr data and the code in an informative message.

install

With npm do:

npm install comandante

license

MIT