UNPKG

1.09 kBJavaScriptView Raw
1var parse = require('./parse');
2
3/**
4 * Converts a string to command line args, in particular
5 * groups together quoted values.
6 * This is a utility function to allow calling nodemon as a required
7 * library, but with the CLI args passed in (instead of an object).
8 *
9 * @param {String} string
10 * @return {Array}
11 */
12function stringToArgs(string) {
13 var args = [];
14
15 var parts = string.split(' ');
16 var length = parts.length;
17 var i = 0;
18 var open = false;
19 var grouped = '';
20 var lead = '';
21
22 for (; i < length; i++) {
23 lead = parts[i].substring(0, 1);
24 if (lead === '"' || lead === '\'') {
25 open = lead;
26 grouped = parts[i].substring(1);
27 } else if (open && parts[i].slice(-1) === open) {
28 open = false;
29 grouped += ' ' + parts[i].slice(0, -1);
30 args.push(grouped);
31 } else if (open) {
32 grouped += ' ' + parts[i];
33 } else {
34 args.push(parts[i]);
35 }
36 }
37
38 return args;
39}
40
41module.exports = {
42 parse: function (argv) {
43 if (typeof argv === 'string') {
44 argv = stringToArgs(argv);
45 }
46
47 return parse(argv);
48 },
49};
\No newline at end of file