xsh
Some random NodeJS helper functions for shell execution
Install
npm install xsh --save-dev
Usage
const xsh = ; xsh;
API
Promise
You can set a custom Promise
with:
xshPromise = ;
Or set to the native Promise
with:
xshPromise = null;
mkCmd
xsh;xsh;
Both return the string "echo hello"
.
exec
xsh;
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;
- With
options
:
xsh
- With callback:
xsh
shellCommand
as a combination of strings and array of strings:
xsh
Would run shell command: echo hello world
envPath.addToFront
xshenvPath;
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
xshenvPath;
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
xshenvPath;
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 = ;xsh$;