xecute-cli 0.1.2

NestJS-style project and resource generator for Xecute
xecute-cli-0.1.2 is not a library.

Xecute CLI

Install from the repository root:

cargo install --path cli/xecute-cli
xecute new my-api
cd my-api
xecute g resource user
cargo run

Install the published release with cargo install xecute-cli --locked.

New projects include a pinned Rust toolchain, formatted files, lockfile, Clippy/EditorConfig configuration, environment examples, CI checks, a non-root multi-stage Dockerfile with a static musl binary and a non-root distroless runtime. The server includes one JSON completion log per request without target or span metadata, UUID request IDs, per-IP rate limits, concurrency limits, request deadlines, body limits, error envelopes, explicit CORS origins, security headers, health probes, and bounded graceful shutdown. Generated middleware tests cover the defaults. Application authentication, shared rate limiting, dependency readiness checks, and TLS ingress still depend on the deployment.

Request GET http://127.0.0.1:3000/user to receive [] from the generated service. Replace the service's list implementation with your business logic.

Commands:

  • new <project> [--runtime-path <path>]: create an independent Axum project.
  • generate resource <name> / g res <name>: create and register a module, injectable service, and controller with macro routing.
  • generate module <name> / g mo <name>: create and register an empty module.
  • generate controller <name> / g co <name>: create a standalone injectable controller with a GET endpoint; register it in your module manually.
  • generate service <name> / g s <name>: create a standalone injectable service; register it in your module manually.

Names such as user-profile become user_profile/ and UserProfileModule. No #[path] annotations are generated. Existing component folders are never overwritten. Run generation from the project root. Automatic registration uses the comments in app_module.rs; keep these markers when editing that file.

Generated projects use xecute = "0.1.0" from crates.io by default. Use xecute new my-api --runtime-path /path/to/cli/xecute for local development.

Resources are collection GET skeletons, not a persistence or CRUD implementation.