def want_verdict

cli@0.2.0.0 · cli.bend:4494

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

4494# The first Q-static message for an arg in scope: kind, absence, then keys,
4495# or for a program, then rest().
4496def want_verdict(want: Want, +id: String, +kind: UsageKind,
4497    +attrs: List<&2, Item>) -> Maybe<&2, String>:
4498  match want:
4499    case WFlag{}:
4500      kind_verdict(kind_flag(kind), id, kind, attrs)
4501    case WCount{}:
4502      kind_verdict(kind_count(kind), id, kind, attrs)
4503    case WValue{+stem, +form}:
4504      Maybe.or(&2, String,
4505        kind_verdict(value_fits(stem, form, kind, attrs), id, kind, attrs),
4506        absent_verdict(Bool.and(form_one(form), may_absent(kind, attrs)),
4507          id, stem))
4508    case WAny{}:
4509      None{}
4510    case WChoose{opt, keys}:
4511      Maybe.or(&2, String,
4512        kind_verdict(choose_fits(kind, attrs), id, kind, attrs),
4513        Maybe.or(&2, String,
4514          absent_verdict(Bool.and(Bool.not(opt), may_absent(kind, attrs)),
4515            id, "choose"),
4516          keys_verdict(find_one_of(attrs), keys, id)))
4517    case WProgram{opt}:
4518      Maybe.or(&2, String,
4519        kind_verdict(program_fits(kind, attrs), id, kind, attrs),
4520        Maybe.or(&2, String,
4521          absent_verdict(Bool.and(Bool.not(opt),
4522            Bool.not(always_present(kind, attrs))), id, "program"),
4523          rest_verdict(has_rest(attrs), id)))

Uses (23)

Used by (1)