cratestack-cli 0.2.1

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

cratestack-cli

Command-line interface for CrateStack schema validation and code generation.

Overview

cratestack-cli provides commands for validating .cstack schemas and generating client code in multiple languages.

Installation

cargo install cratestack-cli

Commands

check - Validate Schema

cratestack check schema.cstack

Validate schema for errors:

cratestack check schema.cstack --json

JSON output for programmatic consumption:

{
  "ok": true,
  "schema": "schema.cstack",
  "diagnostics": []
}

Error output:

{
  "ok": false,
  "schema": "schema.cstack",
  "diagnostics": [
    {
      "line": 5,
      "start": 23,
      "end": 28,
      "message": "field `email` is missing an @id field"
    }
  ]
}

generate-dart - Generate Dart Client

cratestack generate-dart \
  --schema schema.cstack \
  --out ./dart_client \
  --name my_api_client

Options:

  • --schema - Path to .cstack file (required)
  • --out - Output directory (required)
  • --name - Package name (required)

generate-typescript - Generate TypeScript Client

cratestack generate-typescript \
  --schema schema.cstack \
  --out ./ts_client \
  --name my-api-client

generate-studio - Scaffold Project

Generate a complete project scaffold:

cratestack generate-studio \
  --schema schema.cstack \
  --out ./my-project \
  --name inventory-studio \
  --service-url http://127.0.0.1:8082

Build Integration

Use in build.rs:

fn main() {
    println!("cargo:rerun-if-changed=schema.cstack");
    
    let output = std::process::Command::new("cratestack")
        .args(["check", "schema.cstack", "--json"])
        .output()
        .expect("failed to run cratestack");
    
    if !output.status.success() {
        panic!("schema validation failed");
    }
}

Exit Codes

Code Meaning
0 Success
1 Validation error
2 I/O error
101 Internal error

See Also

  • Quickstart
  • cratestack-client-dart - Dart client package structure
  • cratestack-client-typescript - TypeScript client package structure

License

MIT