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