xsh v0.4.5
xsh
Some random NodeJS helper functions for shell execution
Install
npm install xsh --save-devUsage
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- optionaloptions- If it's either
trueorfalse, it setssilentflag for output to console. - It can also be an object that's passed to NodeJS exec.
- For example, it can be
{silent: true}
- For example, it can be
- This can be the first, last, or second to last (if last is the callback) argument.
- If it's either
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
childobject returned byexecWithout callback - An object with following:
{
then, catch, promise, child, stdout, stderr
}Where:
then- a wrapper function for calling thepromise.thencatch- a wrapper function for calling thepromise.catchpromise- rejects with the error or resolves with{ stdout, stderr }child- the child fromexecstdoutandstderr- alias tochild.stdoutandchild.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)})shellCommandas 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");