deno.land / x / yargs@v17.6.0-deno / lib / parse-command.ts

parse-command.ts
نووسراو ببینە
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
39
40
41
42
43
44
45
import {NotEmptyArray} from './typings/common-types.js';
export function parseCommand(cmd: string) { 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: 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('|') as NotEmptyArray<string>, variadic, }); } else { parsedCommand.demanded.push({ cmd: cmd.replace(bregex, '').split('|') as NotEmptyArray<string>, variadic, }); } }); return parsedCommand;}
export interface ParsedCommand { cmd: string; demanded: Positional[]; optional: Positional[];}
export interface Positional { cmd: NotEmptyArray<string>; variadic: boolean;}
yargs

Version Info

Tagged at
a year ago