2.0.1 • Published 8 years ago

executioner v2.0.1

Weekly downloads
11,944
License
MIT
Repository
github
Last release
8 years ago

executioner NPM Module

Executes provided shell commands with supplied arguments. Supports parallel and templated commands.

Build Status Coverage Status

Dependency Status bitHound Overall Score

Notice of change of ownership: Starting version 1.0.0 this package has changed it's owner and goals. Old version (0.0.1) is still available on npm via npm install executioner@0.0.1. Thank you.

Install

npm install --save executioner

Examples

var executioner = require('executioner');

Simple command:

executioner('echo A', {}, function(err, result)
{
  assert.equal(result, 'A');
});

Combined command:

executioner(['echo A', 'echo B', 'echo C'], {}, function(err, result)
{
  assert.deepEqual(result, ['A', 'B', 'C']);
});

Parameterized command:

executioner(['echo A-${abc}', 'echo B-${abc}', 'echo C-${xyz}', 'echo D-${xyz}'], {abc: '123', xyz: '789'}, function(err, result)
{
  assert.deepEqual(result, ['A-123', 'B-123', 'C-789', 'D-789']);
});

Named list of commands:

executioner({'Letter A': 'echo A', 'Letter B': 'echo B', 'Letter C': 'echo C'}, {}, function(err, result)
{
  assert.deepEqual(result, ['Letter A: A', 'Letter B: B', 'Letter C: C']);
});

Prefixed commands:

executioner(['A', 'B', 'C'], {}, {cmdPrefix: 'echo prefixed'}, function(err, result)
{
  assert.deepEqual(result, ['prefixed A', 'prefixed B', 'prefixed C']);
});

Non-string parameters:

executioner(['echo A:${ok}:', 'echo B:${no}:', 'echo C:${nay}:', 'echo D:${never}:'], {ok: true, no: false, nay: null, never: undefined}, function(err, result)
{
  assert.deepEqual(result, ['A:1:', 'B::', 'C::', 'D::']);
});

Error messaging:

executioner('echo ABC && echo XYZ 1>&2 && false', {}, function(err, result)
{
  assert.equal(err.message, 'Command failed: echo ABC && echo XYZ 1>&2 && false\nXYZ');
  assert.equal(err.stdout, 'ABC');
  assert.equal(err.stderr, 'XYZ');
  assert.equal(result, undefined);
});

Job termination:

var job = executioner('echo ABC; sleep 5; echo XYZ', {}, function(err, result)
{
  assert.ok(err.terminated);
  // Partial output
  assert.equal(result, 'ABC');
});

setTimeout(function()
{
  executioner.terminate(job);
}, 100);

For more examples check out tests/tests.json.

License

Executioner is released under the MIT license.