def answer
ezx@1.11.0.0 · src/doctor/run.bend:60
import ezx@1.11.0.0/src/doctor/run.bend as Run
import Base
import snap@1.4.0.0/main.bend as R
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/doctor/world.bend as DW
60
61def answer(+lib: String, ask: DW.Ask) -> IO(DW.Answer):
62 match ask:
63 case DW.Probe{+name}:
64 do IO<DW.Answer>:
65 +out : String <- probe.ask(String.eq(name, "bend"), name)
66 return DW.Printed{R.ok(out), R.text(out)}
67 case DW.Lib{dir}:
68 do IO<DW.Answer>:
69 +out : String <- R.exec(["ls", dir])
70 return DW.Printed{R.ok(out), R.text(out)}
71 case DW.Sources{}:
72 do IO<DW.Answer>:
73 l : W.Listing <- Run.read.listing()
74 return DW.Listed{l}
75 case DW.Tree{a}:
76 tree(lib ++ "/" ++ W.ask.hash(a))
77 case DW.Name{nv}:
78 do IO<DW.Answer>:
79 m : Maybe<&2, String> <- F.read(lib ++ "/names/" ++ nv)
80 return DW.Held{m}