2aa60529
docs: the exe comment counts muxa as the row it is, and two whys move to the mux row
a73x 2026-08-30 12:43
Commit message
build.zig
| Old | New | ||
|---|---|---|---|
| @@ -238,13 +238,17 @@ const mod_table = [_]ModSpec{ | |||
| 238 | // error. `agent` stays a row because muxa's suite must be able to fail on | 238 | // error. `agent` stays a row because muxa's suite must be able to fail on |
| 239 | // its own. The grants are the four mains' union: `webhub` for the hub | 239 | // its own. The grants are the four mains' union: `webhub` for the hub |
| 240 | // surface the entrypoint serves, `daemon` for the Server it constructs | 240 | // surface the entrypoint serves, `daemon` for the Server it constructs |
| 241 | // and the `quic_server`/`upgrade` seams it reaches through it, `quic` for the key | 241 | // and the `quic_server`/`upgrade` seams it reaches through it, `quic` for |
| 242 | // it loads before that listener exists, `client` for the announce | 242 | // the key it loads before that listener exists, `client` for the announce |
| 243 | // vocabulary the daemon writes and the client reads — one owner, or the | 243 | // vocabulary the daemon writes and the client reads — one owner, or the |
| 244 | // two spell it differently — plus the wall the no-arg client opens, | 244 | // two spell it differently — and for `client.hosts`, which owns the host |
| 245 | // `protocol` for validSessionName (a bad --session is a usage error at | 245 | // grammar and the state file, so `mux web`'s argv is parsed by the SAME |
| 246 | // parse, not bytes a daemon downstream must refuse) and `sockpath` for | 246 | // rules `mux hosts add` is: one grammar, not two. Then the wall the |
| 247 | // the sun_path bound every verb checks before acting on a path. | 247 | // no-arg client opens, `protocol` for validSessionName (a bad --session |
| 248 | // is a usage error at parse, not bytes a daemon downstream must refuse) | ||
| 249 | // and `sockpath` for the sun_path bound every verb checks before acting | ||
| 250 | // on a path. `testtmp` is the keygen round-trip's: it needs a directory | ||
| 251 | // to generate into, which the daemon itself never touches. | ||
| 248 | .{ .name = "mux", .path = "src/cli/mux.zig", .layer = 6, .link_libc = true, .imports = &.{ "daemon", "client", "wall", "agent", "webhub", "protocol", "proxy", "quic", "xdg", "spawn", "sockpath", "cliflags" }, .test_imports = &.{"testtmp"}, .quic_tests = true }, | 252 | .{ .name = "mux", .path = "src/cli/mux.zig", .layer = 6, .link_libc = true, .imports = &.{ "daemon", "client", "wall", "agent", "webhub", "protocol", "proxy", "quic", "xdg", "spawn", "sockpath", "cliflags" }, .test_imports = &.{"testtmp"}, .quic_tests = true }, |
| 249 | }; | 253 | }; |
| 250 | 254 | ||
| @@ -910,8 +914,9 @@ pub fn build(b: *std.Build) void { | |||
| 910 | // needs it by hand, or the argument parsers lose the version they print. | 914 | // needs it by hand, or the argument parsers lose the version they print. |
| 911 | test_mods[comptime idxOf("mux")].addImport("build_options", build_opts_mod); | 915 | test_mods[comptime idxOf("mux")].addImport("build_options", build_opts_mod); |
| 912 | 916 | ||
| 913 | // ONE product binary. The four mains are files under it, reached by | 917 | // ONE product binary. Three of the four mains are files under it and |
| 914 | // the mode word rather than by four names on PATH — which is also what | 918 | // muxa is the `agent` row it imports; all four are reached by the mode |
| 919 | // word rather than by four names on PATH — which is also what | ||
| 915 | // lets the client's auto-start exec this same image with argv | 920 | // lets the client's auto-start exec this same image with argv |
| 916 | // `mux d run …` (spawn.zig) instead of hunting PATH for a sibling. The | 921 | // `mux d run …` (spawn.zig) instead of hunting PATH for a sibling. The |
| 917 | // fixtures below stay separate: they stand in for users, not for the | 922 | // fixtures below stay separate: they stand in for users, not for the |