(cmdString: string)
| 592 | // Based on parsing variadic markers '...', demand syntax '<foo>', etc., |
| 593 | // populate parser hints: |
| 594 | public cmdToParseOptions(cmdString: string): Positionals { |
| 595 | const parseOptions: Positionals = { |
| 596 | array: [], |
| 597 | default: {}, |
| 598 | alias: {}, |
| 599 | demand: {}, |
| 600 | }; |
| 601 | |
| 602 | const parsed = parseCommand(cmdString); |
| 603 | parsed.demanded.forEach(d => { |
| 604 | const [cmd, ...aliases] = d.cmd; |
| 605 | if (d.variadic) { |
| 606 | parseOptions.array.push(cmd); |
| 607 | parseOptions.default[cmd] = []; |
| 608 | } |
| 609 | parseOptions.alias[cmd] = aliases; |
| 610 | parseOptions.demand[cmd] = true; |
| 611 | }); |
| 612 | |
| 613 | parsed.optional.forEach(o => { |
| 614 | const [cmd, ...aliases] = o.cmd; |
| 615 | if (o.variadic) { |
| 616 | parseOptions.array.push(cmd); |
| 617 | parseOptions.default[cmd] = []; |
| 618 | } |
| 619 | parseOptions.alias[cmd] = aliases; |
| 620 | }); |
| 621 | |
| 622 | return parseOptions; |
| 623 | } |
| 624 | |
| 625 | // we run yargs-parser against the positional arguments |
| 626 | // applying the same parsing logic used for flags. |
no test coverage detected