def dispatch

ezx@1.11.0.0 · src/ez/main.bend:24

import ezx@1.11.0.0/src/ez/main.bend as Ezx
import Base
import shake@0.6.0.0/main.bend as Shake
import ezx@1.11.0.0/src/share/args.bend as Args
import ezx@1.11.0.0/src/ez/cmd.bend as Cmd
import ezx@1.11.0.0/src/ez/test.bend as Test
import ezx@1.11.0.0/src/ez/prove.bend as Prove
import ezx@1.11.0.0/src/doctor/run.bend as DoctorRun
import ezx@1.11.0.0/src/tool/run.bend as ToolRun
import ezx@1.11.0.0/src/tool/world.bend as TW
import ezx@1.11.0.0/src/ez/line.bend as L
import ezx@1.11.0.0/src/ws/run.bend as WsRun

24# what a subcommand runs. `L.line` never runs `CHelp`, which names no
25# command; it is here so the match is whole, and it writes the help a bare
26# `ez` would. The directories `ez check` and `ez build` write into are made
27# by those commands once they know they will start bend (`Env.dirs`), so a
28# refused one leaves the directory as it found it.
29def dispatch(sub: L.Sub, +matched: Shake.Matched, +as: List<&2, String>) -> IO(Unit):
30  match sub:
31    case L.CInit{}:
32      Cmd.init(L.get(matched, "name"), L.get(matched, "entry"),
33        L.get(matched, "description"))
34    case L.CAdd{}:
35      +target = L.get(matched, "target")
36      +ref = L.get(matched, "ref")
37      +entry = L.get(matched, "entry")
38      +rename = L.get(matched, "rename")
39      WsRun.in.member(_u => Cmd.add(target, ref, entry, rename))
40    case L.CRemove{}:
41      +name = L.get(matched, "name")
42      WsRun.in.member(_u => Cmd.remove(name))
43    case L.CLock{}:
44      +up = Shake.on(matched, "upgrade")
45      +only = L.get(matched, "package")
46      WsRun.at.root(_u => Cmd.lock(up, only))
47    case L.CFetch{}:
48      WsRun.at.root(_u => Cmd.fetch())
49    case L.CCheck{}:
50      WsRun.in.member(_u => Cmd.check())
51    case L.CBuild{}:
52      +out = L.get(matched, "out")
53      WsRun.in.member(_u => Cmd.build(out))
54    case L.CRun{}:
55      WsRun.in.member(_u => Cmd.run(as))
56    case L.CToolSync{}:
57      ToolRun.sync()
58    case L.CToolRun{}:
59      ToolRun.run(TW.Run{Args.tool.rest(as)}, L.get(matched, "target"),
60        L.get(matched, "entry"))
61    case L.CToolInstall{}:
62      ToolRun.run(TW.Install{}, L.get(matched, "target"), L.get(matched, "entry"))
63    case L.CToolUpgrade{}:
64      ToolRun.run(TW.Upgrade{}, L.get(matched, "target"), L.get(matched, "entry"))
65    case L.CPublish{}:
66      WsRun.in.member(_u => Cmd.publish())
67    case L.CTest{}:
68      Test.run()
69    case L.CProve{}:
70      Prove.run()
71    case L.CDoctor{}:
72      WsRun.at.root(_u => DoctorRun.run())
73    case L.CHelp{}:
74      IO.write(Shake.help(L.spec(), []))

Uses (29)

Used by (1)