executioner
v2.0.1
Published
Executes provided shell commands with supplied arguments. Supports parallel and templated commands
Downloads
124,644
Maintainers
Readme
executioner
Executes provided shell commands with supplied arguments. Supports parallel and templated commands.
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 [email protected]
. 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.