aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/concurrently/dist/src/command-parser/expand-arguments.js
blob: 42c087cee550b709d12ec8780348ffa61ad898e2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpandArguments = void 0;
const shell_quote_1 = require("shell-quote");
/**
 * Replace placeholders with additional arguments.
 */
class ExpandArguments {
    constructor(additionalArguments) {
        this.additionalArguments = additionalArguments;
    }
    parse(commandInfo) {
        const command = commandInfo.command.replace(/\\?\{([@*]|[1-9][0-9]*)\}/g, (match, placeholderTarget) => {
            // Don't replace the placeholder if it is escaped by a backslash.
            if (match.startsWith('\\')) {
                return match.slice(1);
            }
            // Replace numeric placeholder if value exists in additional arguments.
            if (!isNaN(placeholderTarget) &&
                placeholderTarget <= this.additionalArguments.length) {
                return (0, shell_quote_1.quote)([this.additionalArguments[placeholderTarget - 1]]);
            }
            // Replace all arguments placeholder.
            if (placeholderTarget === '@') {
                return (0, shell_quote_1.quote)(this.additionalArguments);
            }
            // Replace combined arguments placeholder.
            if (placeholderTarget === '*') {
                return (0, shell_quote_1.quote)([this.additionalArguments.join(' ')]);
            }
            // Replace placeholder with empty string
            // if value doesn't exist in additional arguments.
            return '';
        });
        return { ...commandInfo, command };
    }
}
exports.ExpandArguments = ExpandArguments;
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage