cratestack-cli 0.3.3

Rust-native schema-first framework for typed HTTP APIs, generated clients, and backend services.
cratestack-cli-0.3.3 is not a library.

cratestack-cli

Command-line tool for .cstack schema validation and client/Studio code generation.

Installation

cargo install cratestack-cli --version 0.2.2

Or from the workspace:

cargo run -p cratestack-cli -- --help

Commands

check — validate a schema

cratestack check --schema path/to/schema.cstack
cratestack check --schema path/to/schema.cstack --format json

Flags:

  • --schema <PATH> — path to the .cstack file (required)
  • --format <human|json> — output format (default human)

On success the human formatter writes schema OK: <path>; the JSON formatter prints a { ok: true, ... } document. On error the human formatter renders a diagnostic and exits non-zero; the JSON formatter prints { ok: false, diagnostics: [...] } and exits 1.

generate-dart — Dart package

cratestack generate-dart \
  --schema schemas/catalog.cstack \
  --out packages/catalog_client \
  --library-name catalog_client \
  --base-path /api

Flags:

  • --schema <PATH> (required)
  • --out <PATH> (required)
  • --library-name <NAME> (default cratestack_client)
  • --base-path <PATH> (default /api)
  • --template-dir <PATH> (optional)

generate-typescript (alias generate-ts)

cratestack generate-typescript \
  --schema schemas/catalog.cstack \
  --out packages/catalog-client \
  --package-name @example/catalog-client \
  --base-path /api

Flags:

  • --schema <PATH> (required)
  • --out <PATH> (required)
  • --package-name <NAME> (default cratestack-client)
  • --base-path <PATH> (default /api)
  • --template-dir <PATH> (optional)

studio — admin and testing surface

Replaces the old generate-studio codegen scaffold. The studio reads a workspace file (studio.toml) listing one or more .cstack schemas plus their DB and/or API targets, then serves a single binary.

cratestack studio init               # writes ./studio.toml
cratestack studio run                # binds 127.0.0.1:7878 by default
cratestack studio run --config infra/studio.toml --bind 0.0.0.0:9000
cratestack studio eject --out ./out  # Phase 2 — currently returns NotImplemented

Subcommand flags:

  • init: --out <DIR> (default .), --force to overwrite an existing studio.toml
  • run: --config <PATH> (default studio.toml), --bind <ADDR> (default 127.0.0.1:7878)
  • eject: --config <PATH> (default studio.toml), --out <DIR> (required)

print-ir — dump parsed schema IR

cratestack print-ir --schema schemas/catalog.cstack

Build Integration

fn main() {
    println!("cargo:rerun-if-changed=schema.cstack");

    let output = std::process::Command::new("cratestack")
        .args(["check", "--schema", "schema.cstack", "--format", "json"])
        .output()
        .expect("failed to run cratestack");

    if !output.status.success() {
        panic!("schema validation failed");
    }
}

See Also

  • Quickstart
  • cratestack-client-dart — Dart package structure
  • cratestack-client-typescript — TypeScript package structure
  • cratestack-studio-generator — Studio scaffold internals

License

MIT