xsh
v0.4.5
Published
Some random NodeJS helper functions for shell execution
Downloads
44,890
Readme
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
- optionaloptions
- If it's either
true
orfalse
, it setssilent
flag 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
child
object returned byexec
Without callback - An object with following:
{
then, catch, promise, child, stdout, stderr
}
Where:
then
- a wrapper function for calling thepromise.then
catch
- a wrapper function for calling thepromise.catch
promise
- rejects with the error or resolves with{ stdout, stderr }
child
- the child fromexec
stdout
andstderr
- alias tochild.stdout
andchild.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");