def arg_collision

cli@0.2.0.0 · cli.bend:1789

import cli@0.2.0.0/cli.bend as Cli
import Base

1789def arg_collision(seen: List<&2, Seen>, +id: String,
1790    +short: String, +long: String) -> Maybe<&2, String>:
1791  match seen:
1792    case Nil{}:
1793      None{}
1794    case SeenArg{old_id, old_short, old_long} <> tail:
1795      here = Bool.pick(Maybe<&2, String>, same_nonempty(short, old_short),
1796        Some{short}, Bool.pick(Maybe<&2, String>,
1797          same_nonempty(long, old_long), Some{long},
1798          Bool.pick(Maybe<&2, String>, same_text(id, old_id), Some{id}, None{})))
1799      Maybe.or(&2, String, here, arg_collision(tail, id, short, long))
1800    case SeenArgAlias{+old} <> tail:
1801      Bool.pick(Maybe<&2, String>, same_nonempty(short, old),
1802        Some{short}, Bool.pick(Maybe<&2, String>,
1803          same_nonempty(long, old), Some{long},
1804          arg_collision(tail, id, short, long)))
1805    case head <> tail:
1806      arg_collision(tail, id, short, long)

Uses (8)

Used by (1)