Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    executionerpublic

    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.

    install

    npm i executioner

    Downloadslast 7 days

    678

    version

    2.0.1

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar