def answer
ezx@1.11.0.0 · src/fetch/run.bend:42
import ezx@1.11.0.0/src/fetch/run.bend as Run
import Base
import ezx@1.11.0.0/src/io/file.bend as F
import ezx@1.11.0.0/src/lock/run.bend as Run
import ezx@1.11.0.0/src/lock/world.bend as W
import ezx@1.11.0.0/src/lock/up.bend as Up
import ezx@1.11.0.0/src/fetch/world.bend as FW
42
43def answer(+lib: String, ask: FW.Ask) -> IO(FW.Answer):
44 match ask:
45 case FW.Laid{hash}:
46 do IO<FW.Answer>:
47 a : W.Answer <- laid(lib, hash)
48 return FW.Read{a}
49 case FW.Git{_hash, q}:
50 do IO<FW.Answer>:
51 a : Up.Answer <- Run.answer.up(lib, q)
52 return FW.Said{a}
53 case FW.Hub{q}:
54 do IO<FW.Answer>:
55 a : W.Answer <- Run.answer(lib, q)
56 return FW.Read{a}
57 case FW.Named{nv}:
58 do IO<FW.Answer>:
59 m : Maybe<&2, String> <- F.read(lib ++ "/names/" ++ nv)
60 return FW.Held{m}
61 case FW.Tree{_hash, _entry}:
62 do IO<FW.Answer>:
63 l : W.Listing <- Run.read.listing()
64 return FW.Seen{l}