Signature
CLI(Request& context)
Defines a local command-line entrypoint for a UCE unit.
CLI(Request& context) is invoked only through the local UCE CLI Unix socket, not through ordinary public HTTP requests. This lets web apps keep test runners, migrations, maintenance tasks, and admin tooling beside the rest of their UCE units while still separating those commands from browser-facing RENDER() routes.
The default CLI socket path is /run/uce/cli.sock and is configured with CLI_SOCKET_PATH.
Example convenience script usage:
Equivalent curl probe:
For structured commands, prefer JSON POST bodies. The scripts/uce-cli helper sends key=value parameters as JSON POST by default, while still allowing --get for simple query-string probes.
Inside the handler, the usual Request& context fields are available:
context.getfor command query parameterscontext.postandcontext.infor POST bodiescontext.params["UCE_CLI"] == "1"for CLI socket dispatchcontext.params["SCRIPT_FILENAME"]for the invoked unit file
CLI responses default to text/plain; charset=utf-8, but the handler may set headers and status explicitly.
Use cli_input(context) to merge query parameters, form parameters, and JSON POST fields into one DValue.
ONCE(Request& context) runs before CLI() in the same way it runs before render and component entrypoints. INIT(Request& context) runs when the unit is loaded into a worker.
Example
print("CLI is a unit directive; place it at top level in a .uce unit.\n");
CLI is a unit directive; place it at top level in a .uce unit.