Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
jash
JavaScript
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
src
test
.gitignore
LICENSE
README.md
package.json

README.md

jash.js allows you to more easily use node as a shell scripting facility. It will collate all output in an easy to consume way - avoiding pitfalls that can cause you to lose data.

You can call any commandline utility like this: (Why '$'? It's a shell prompt!)

var $ = require('jash');
$.ls('-l', '/tmp/foo', function(statusCode, stdout, stderr) {
    console.log('files are', stdout);
}

or with your own callbacks for stdout and stderr. This is nice for long running processes and the like

var getStreamConsumer = function() {
    return function(data) {
        console.log('I got some data!', data);
    };
};

$.tail('-f', '/var/log/foo.log', getStreamConsumer(), getStreamConsumer());

Since the child process is returned, you can also do whatever you want:

var child = $.ls('-l', '/tmp/foo');
child.stdout.on ...
child.stderr.on ...
child.on('exit') ...

The full API:

$.cmd(arg1, arg2, arg3, [options],[cb [, stdoutHandler, stdErrHandler]]);

where options is the options argument passed to child_process.spawn: http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

arguments can also be passed in an array as the first argument:

$.cmd([arg1, arg2, arg3], ...

When only one callback is passed, cb is a function that takes 3 arguments:

function(statusCode, stdout, stderr) { ...

You can also pass 3 callbacks:

cb = function(statusCode) ...
stdout = function(data) ...
stderr = function(data) ...

jash is written by Tom Fairfield

Something went wrong with that request. Please try again.