You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.1 KiB
49 lines
1.1 KiB
var parse = require('./parse'); |
|
|
|
/** |
|
* Converts a string to command line args, in particular |
|
* groups together quoted values. |
|
* This is a utility function to allow calling nodemon as a required |
|
* library, but with the CLI args passed in (instead of an object). |
|
* |
|
* @param {String} string |
|
* @return {Array} |
|
*/ |
|
function stringToArgs(string) { |
|
var args = []; |
|
|
|
var parts = string.split(' '); |
|
var length = parts.length; |
|
var i = 0; |
|
var open = false; |
|
var grouped = ''; |
|
var lead = ''; |
|
|
|
for (; i < length; i++) { |
|
lead = parts[i].substring(0, 1); |
|
if (lead === '"' || lead === '\'') { |
|
open = lead; |
|
grouped = parts[i].substring(1); |
|
} else if (open && parts[i].slice(-1) === open) { |
|
open = false; |
|
grouped += ' ' + parts[i].slice(0, -1); |
|
args.push(grouped); |
|
} else if (open) { |
|
grouped += ' ' + parts[i]; |
|
} else { |
|
args.push(parts[i]); |
|
} |
|
} |
|
|
|
return args; |
|
} |
|
|
|
module.exports = { |
|
parse: function (argv) { |
|
if (typeof argv === 'string') { |
|
argv = stringToArgs(argv); |
|
} |
|
|
|
return parse(argv); |
|
}, |
|
}; |