| export 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; | 
| } |