| 'use strict'; | 
| const SPACES_REGEXP = / +/g; | 
|   | 
| const joinCommand = (file, args = []) => { | 
|     if (!Array.isArray(args)) { | 
|         return file; | 
|     } | 
|   | 
|     return [file, ...args].join(' '); | 
| }; | 
|   | 
| // Allow spaces to be escaped by a backslash if not meant as a delimiter | 
| const handleEscaping = (tokens, token, index) => { | 
|     if (index === 0) { | 
|         return [token]; | 
|     } | 
|   | 
|     const previousToken = tokens[tokens.length - 1]; | 
|   | 
|     if (previousToken.endsWith('\\')) { | 
|         return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`]; | 
|     } | 
|   | 
|     return [...tokens, token]; | 
| }; | 
|   | 
| // Handle `execa.command()` | 
| const parseCommand = command => { | 
|     return command | 
|         .trim() | 
|         .split(SPACES_REGEXP) | 
|         .reduce(handleEscaping, []); | 
| }; | 
|   | 
| module.exports = { | 
|     joinCommand, | 
|     parseCommand | 
| }; |