Neverending Plethora of Modules
    Have ideas to improve npm?Join in the discussion! »

    exec-sh
    TypeScript icon, indicating that this package has built-in type declarations

    0.4.0 • Public • Published

    exec-sh

    NPM

    NPM Downloads Build Status Coverage Status David Status

    Execute shell command forwarding all stdio streams.

    Features

    exec-sh is a wrapper for child_process.spawn with some improvements:

    • Cross platform command execution:
      • Windows: cmd /C COMMAND
      • others: sh -c COMMAND
    • Fowrards all stdio streams to current terminal (by default):
      • execSh("bash")
      • execsh("echo -n Say: && read i && echo Said:$i")
    • stdout and stderr are passed to callback when available
      • execSh("pwd", console.log)

    Showcase

    // JavaScript
    
    execSh("echo hello exec-sh && bash", { cwd: "/home" }, function(err){
      if (err) {
        console.log("Exit code: ", err.code);
      }
    });
    # Terminal output: interactive bash session
    
    hello exec-sh
    bash-3.2$ pwd
    /home
    bash-3.2$ exit 99
    exit
    Exit code:  99

    Usage

    const execSh = require("../");
    
    // run interactive bash shell
    execSh("echo lorem && bash", { cwd: "/home" }, (err) => {
      if (err) {
        console.log("Exit code: ", err.code);
        return;
      }
    
      // collect streams output
      const child = execSh(["bash -c id", "echo lorem >&2"], true,
        (err, stdout, stderr) => {
          console.log("error: ", err);
          console.log("stdout: ", stdout);
          console.log("stderr: ", stderr);
        });
    });

    Promise Interface

    const execShPromise = require("exec-sh").promise;
    
    // run interactive bash shell
    const run = async () => {
      let out;
    
      try {
        out = await execShPromise('pwd', true);
      } catch (e) {
        console.log('Error: ', e);
        console.log('Stderr: ', e.stderr);
        console.log('Stdout: ', e.stdout);
    
        return e;
      }
    
      console.log('out: ', out.stdout, out.stderr);
    }
    
    run();

    Public API

    execSh(command, [options], [callback])

    Execute shell command forwarding all stdio.

    Parameters:

    • command {String|Array} - The command to run, or array of commands
    • [options] {Object|TRUE} - Options object passed directly to child_process.spawn, when TRUE then { stdio: null } used
    • [callback] {Function} - callback(err, stdout, stderr)
    • err {Error|NULL} - Error object. Has code property containing last command exit code when available
    • stdout {String|NULL} - aggregated stdout or NULL if not available
    • stderr {String|NULL} - aggregated stderr or NULL if not available

    Return Values:

    Returns ChildProcess object.

    Private API

    Complete API Documentation including private and public methods is generated from source code by JSDoc tool and is available here.

    Code Coverage

    Code coverage report for all files is available here.

    Scripts

    • npm test - run tests
    • npm run jsdoc - build jsdoc
    • npm run dev - run tests continuously

    License

    The MIT License (MIT)

    Install

    npm i exec-sh

    DownloadsWeekly Downloads

    8,987,620

    Version

    0.4.0

    License

    MIT

    Unpacked Size

    23.9 kB

    Total Files

    10

    Last publish

    Collaborators

    • avatar