MCPcopy
hub / github.com/Effect-TS/effect / matchOptions

Function matchOptions

packages/cli/src/internal/options.ts:1542–1593  ·  view source on GitHub ↗
(
  input: ReadonlyArray<string>,
  options: ReadonlyArray<ParseableInstruction>,
  config: CliConfig.CliConfig
)

Source from the content-addressed store, hash-verified

1540 * arguments from `input` and a mapping between each flag and its values.
1541 */
1542const matchOptions = (
1543 input: ReadonlyArray<string>,
1544 options: ReadonlyArray<ParseableInstruction>,
1545 config: CliConfig.CliConfig
1546): Effect.Effect<
1547 [
1548 Option.Option<ValidationError.ValidationError>,
1549 ReadonlyArray<string>,
1550 HashMap.HashMap<string, ReadonlyArray<string>>
1551 ]
1552> => {
1553 if (Arr.isNonEmptyReadonlyArray(options)) {
1554 return findOptions(input, options, config).pipe(
1555 Effect.flatMap(([otherArgs, otherOptions, map1]) => {
1556 if (HashMap.isEmpty(map1)) {
1557 return Effect.succeed([Option.none(), input, map1] as [
1558 Option.Option<ValidationError.ValidationError>,
1559 ReadonlyArray<string>,
1560 HashMap.HashMap<string, ReadonlyArray<string>>
1561 ])
1562 }
1563 return matchOptions(otherArgs, otherOptions, config).pipe(
1564 Effect.map(([error, otherArgs, map2]) =>
1565 [error, otherArgs, merge(map1, Arr.fromIterable(map2))] as [
1566 Option.Option<ValidationError.ValidationError>,
1567 ReadonlyArray<string>,
1568 HashMap.HashMap<string, ReadonlyArray<string>>
1569 ]
1570 )
1571 )
1572 }),
1573 Effect.catchAll((e) =>
1574 Effect.succeed([Option.some(e), input, HashMap.empty()] as [
1575 Option.Option<ValidationError.ValidationError>,
1576 ReadonlyArray<string>,
1577 HashMap.HashMap<string, ReadonlyArray<string>>
1578 ])
1579 )
1580 )
1581 }
1582 return Arr.isEmptyReadonlyArray(input)
1583 ? Effect.succeed([Option.none(), Arr.empty(), HashMap.empty()] as [
1584 Option.Option<ValidationError.ValidationError>,
1585 ReadonlyArray<string>,
1586 HashMap.HashMap<string, ReadonlyArray<string>>
1587 ])
1588 : Effect.succeed([Option.none(), input, HashMap.empty()] as [
1589 Option.Option<ValidationError.ValidationError>,
1590 ReadonlyArray<string>,
1591 HashMap.HashMap<string, ReadonlyArray<string>>
1592 ])
1593}
1594
1595/**
1596 * Returns the leftover arguments, leftover options, and a mapping between the

Callers 1

options.tsFile · 0.85

Calls 5

findOptionsFunction · 0.85
mergeFunction · 0.70
pipeMethod · 0.65
isEmptyMethod · 0.65
mapMethod · 0.65

Tested by

no test coverage detected