Parse and quote shell commands.
var quote = require('shell-quote').quote;
var s = quote([ 'a', 'b c d', '$f', '"g"' ]);
console.log(s);
output
a 'b c d' \$f '"g"'
var parse = require('shell-quote').parse;
var xs = parse('a "b c" \\$def \'it\\\'s great\'');
console.dir(xs);
output
[ 'a', 'b c', '\\$def', 'it\'s great' ]
var parse = require('shell-quote').parse;
var xs = parse('beep --boop="$PWD"', { PWD: '/home/robot' });
console.dir(xs);
output
[ 'beep', '--boop=/home/robot' ]
var parse = require('shell-quote').parse;
var xs = parse('beep --boop="$PWD"', { PWD: '/home/robot' }, { escape: '^' });
console.dir(xs);
output
[ 'beep', '--boop=/home/robot' ]
var parse = require('shell-quote').parse;
var xs = parse('beep || boop > /byte');
console.dir(xs);
output:
[ 'beep', { op: '||' }, 'boop', { op: '>' }, '/byte' ]
var quote = require('shell-quote').quote;
var parse = require('shell-quote').parse;
Return a quoted string for the array args
suitable for using in shell
commands.
Return an array of arguments from the quoted string cmd
.
Interpolate embedded bash-style $VARNAME
and ${VARNAME}
variables with
the env
object which like bash will replace undefined variables with ""
.
env
is usually an object but it can also be a function to perform lookups.
When env(key)
returns a string, its result will be output just like env[key]
would. When env(key)
returns an object, it will be inserted into the result
array like the operator objects.
When a bash operator is encountered, the element in the array with be an object
with an "op"
key set to the operator string. For example:
'beep || boop > /byte'
parses as:
[ 'beep', { op: '||' }, 'boop', { op: '>' }, '/byte' ]
With npm do:
npm install shell-quote
MIT
# shell-quote Parse and quote shell commands. [![build status](https://secure.travis-ci.org/substack/node-shell-quote.png)](http://travis-ci.org/substack/node-shell-quote) [![browser support](https://ci.testling.com/substack/node-shell-quote.png)](https://ci.testling.com/substack/node-shell-quote) # example ## quote ``` js var quote = require('shell-quote').quote; var s = quote([ 'a', 'b c d', '$f', '"g"' ]); console.log(s); ``` output ``` a 'b c d' \$f '"g"' ``` ## parse ``` js var parse = require('shell-quote').parse; var xs = parse('a "b c" \\$def \'it\\\'s great\''); console.dir(xs); ``` output ``` [ 'a', 'b c', '\\$def', 'it\'s great' ] ``` ## parse with an environment variable ``` js var parse = require('shell-quote').parse; var xs = parse('beep --boop="$PWD"', { PWD: '/home/robot' }); console.dir(xs); ``` output ``` [ 'beep', '--boop=/home/robot' ] ``` ## parse with custom escape charcter ``` js var parse = require('shell-quote').parse; var xs = parse('beep --boop="$PWD"', { PWD: '/home/robot' }, { escape: '^' }); console.dir(xs); ``` output ``` [ 'beep', '--boop=/home/robot' ] ``` ## parsing shell operators ``` js var parse = require('shell-quote').parse; var xs = parse('beep || boop > /byte'); console.dir(xs); ``` output: ``` [ 'beep', { op: '||' }, 'boop', { op: '>' }, '/byte' ] ``` # methods ``` js var quote = require('shell-quote').quote; var parse = require('shell-quote').parse; ``` ## quote(args) Return a quoted string for the array `args` suitable for using in shell commands. ## parse(cmd, env={}) Return an array of arguments from the quoted string `cmd`. Interpolate embedded bash-style `$VARNAME` and `${VARNAME}` variables with the `env` object which like bash will replace undefined variables with `""`. `env` is usually an object but it can also be a function to perform lookups. When `env(key)` returns a string, its result will be output just like `env[key]` would. When `env(key)` returns an object, it will be inserted into the result array like the operator objects. When a bash operator is encountered, the element in the array with be an object with an `"op"` key set to the operator string. For example: ``` 'beep || boop > /byte' ``` parses as: ``` [ 'beep', { op: '||' }, 'boop', { op: '>' }, '/byte' ] ``` # install With [npm](http://npmjs.org) do: ``` npm install shell-quote ``` # license MIT
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 19553 | swellard | Move and rename clients | ||
//guest/perforce_software/helix-web-services/main/source/clients/2016.1.0/javascript/node_modules/shell-quote/readme.markdown | |||||
#1 | 18810 | tjuricek |
First-pass at JavaScript client SDK. JavaScript requires Node with Gulp to "browserfy" the library. It's the easiest way I found to use the swagger-js project; bundle up a wrapping method. There is no JavaScript reference guide. The swagger-js doesn't really document what they do very well, actually. Overall I'm not particularly impressed by swagger-js, it was hard to even figure out what the right method syntax was. We may want to invest time in doing it better. This required setting CORS response headers, which are currently defaulted to a fairly insecure setting. |