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
			| 
											3 years ago
										 | 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); | ||
|  |   }, | ||
|  | }; |