xsh

0.4.5 • Public • Published

NPM version Build Status Dependency Status devDependency Status

xsh

Some random NodeJS helper functions for shell execution

Install

npm install xsh --save-dev

Usage

const xsh = require("xsh");
 
xsh.exec("echo hello");

API

Promise

You can set a custom Promise with:

xsh.Promise = require("bluebird");

Or set to the native Promise with:

xsh.Promise = null;

mkCmd

xsh.mkCmd(["echo", "hello"]);
xsh.mkCmd("echo", "hello");

Both return the string "echo hello".

exec

xsh.exec(shellCommand, [options], [callback] );

Use shelljs exec to execute shellCommand in async mode.

Arguments

  • shellCommand - can be combination of multiple strings and arrays. Array is joined with " " into strings. All final strings are joined with " ".

  • options - optional options

    • If it's either true or false, it sets silent flag for output to console.
    • It can also be an object that's passed to NodeJS exec.
      • For example, it can be {silent: true}
    • This can be the first, last, or second to last (if last is the callback) argument.
  • callback - optional, if provided, it will be called as follows:

callback( code !== 0 ? new Error("...") : undefined, { stdout, stderr } )

error.output is set to { stdout, stderr}. error.code is set to code.

Returns

  • With callback - The child object returned by exec

  • Without callback - An object with following:

{
  then, catch, promise, child, stdout, stderr
}

Where:

  • then - a wrapper function for calling the promise.then
  • catch - a wrapper function for calling the promise.catch
  • promise - rejects with the error or resolves with { stdout, stderr }
  • child - the child from exec
  • stdout and stderr - alias to child.stdout and child.stderr

exec Examples

  • With Promise:
xsh.exec("echo hello").then(r => { console.log("result", r.stdout); });
  • With options:
xsh.exec("pwd", {cwd: "/tmp"}).then(r => { console.log("result", r.stdout)})
  • With callback:
xsh.exec("echo hello", (r) => {console.log("result", r.stdout)})
  • shellCommand as a combination of strings and array of strings:
xsh.exec("echo", ["hello", "world"], {silent: false})

Would run shell command: echo hello world

envPath.addToFront

xsh.envPath.addToFront(path, [env]);

Add path to the front of process.env.PATH. If it already exists, then it is moved to the front.

If you don't want to operate on process.env you can pass in a second argument that's either an object or a string that's the path to change.

envPath.addToEnd

xsh.envPath.addToEnd(path, [env]);

Add path to the end of process.env.PATH. If it already exists, then it is moved to the end.

If you don't want to operate on process.env you can pass in a second argument that's either an object or a string that's the path to change.

envPath.add

xsh.envPath.add(path, [env]);

If path doesn't exist in process.env.PATH then it's added to the end.

If you don't want to operate on process.env you can pass in a second argument that's either an object or a string that's the path to change.

$

An instance of shelljs.

const xsh = require("xsh");
xsh.$.cd("/tmp");

Readme

Keywords

none

Package Sidebar

Install

npm i xsh

Weekly Downloads

16,112

Version

0.4.5

License

Apache-2.0

Unpacked Size

12.1 kB

Total Files

11

Last publish

Collaborators

  • jchip