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