| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.parseCommand = void 0; |
| function parseCommand(cmd) { |
| const extraSpacesStrippedCommand = cmd.replace(/\s{2,}/g, ' '); |
| const splitCommand = extraSpacesStrippedCommand.split(/\s+(?![^[]*]|[^<]*>)/); |
| const bregex = /\.*[\][<>]/g; |
| const firstCommand = splitCommand.shift(); |
| if (!firstCommand) |
| throw new Error(`No command found in: ${cmd}`); |
| const parsedCommand = { |
| cmd: firstCommand.replace(bregex, ''), |
| demanded: [], |
| optional: [] |
| }; |
| splitCommand.forEach((cmd, i) => { |
| let variadic = false; |
| cmd = cmd.replace(/\s/g, ''); |
| if (/\.+[\]>]/.test(cmd) && i === splitCommand.length - 1) |
| variadic = true; |
| if (/^\[/.test(cmd)) { |
| parsedCommand.optional.push({ |
| cmd: cmd.replace(bregex, '').split('|'), |
| variadic |
| }); |
| } |
| else { |
| parsedCommand.demanded.push({ |
| cmd: cmd.replace(bregex, '').split('|'), |
| variadic |
| }); |
| } |
| }); |
| return parsedCommand; |
| } |
| exports.parseCommand = parseCommand; |