The dsvc CLI for Distributed services — both a binary and a library.
It bundles two things in one crate so there is no cross-repo coordination:
- Pure generation (the [
generate]/[atlas] modules): the rules for a Distributed service project — Cargo layout, Rust source templates, manifest wiring, GitOps/Knative inference, GitHub workflows, and Atlas schema resources. These perform no I/O — [generate_service_scaffold] takes a [ServiceScaffoldSpec] and returns a [GeneratedProject]; [render_atlas_schema] wraps desired-state SQL into anAtlasSchema. - The command surface (the [
cli] module): the clap types and [run] dispatcher that own the filesystem / process side effects (writing files, runninggh, compiling the manifest harness).
The dsvc binary parses [ServiceArgs] and calls [run]. Another CLI (e.g.
hops) can depend on this crate, mount [ServiceArgs] under its own
subcommand, and dispatch with [run] — re-exporting the commands rather than
reimplementing them.