actr-cli 0.3.1

Command line tool for Actor-RTC framework projects
Documentation
[package]
name = "actr-cli"
version = "0.3.1"
edition = "2024"
rust-version = "1.88"
license = "Apache-2.0"
repository = "https://github.com/actor-rtc/actr"
description = "Command line tool for Actor-RTC framework projects"
keywords = ["actor", "cli", "codegen", "protobuf", "framework"]
categories = ["command-line-utilities", "development-tools"]
include = [
    "Cargo.toml",
    "LICENSE",
    "README.md",
    "build.rs",
    "src/**",
    "fixtures/**",
    "assets/web-runtime/actor.sw.js",
    "assets/web-runtime/actr-host.html",
    "assets/web-runtime/actr_sw_host.js",
    "assets/web-runtime/actr_sw_host_bg.wasm",
]

[features]
default = ["dynclib-engine"]
test-utils = ["dep:actr-mock-actrix", "dep:rusqlite"]
wasm-engine = ["actr-hyper/wasm-engine"]
dynclib-engine = ["actr-hyper/dynclib-engine"]

[[bin]]
name = "actr"
path = "src/main.rs"

[dependencies]
# Actor-RTC main crate with config feature (includes protocol, config, version)
actr = { path = "..", version = "0.3.1", features = ["config"] }

# Hyper layer - binary hash computation and manifest embed for dev tooling
actr-hyper = { path = "../core/hyper", version = "0.3.1" }

# Package format (.actr ZIP STORE)
actr-pack.workspace = true

# Platform provider for native execution
actr-platform-native = { path = "../core/platform-native", version = "0.3.1" }

# Key generation for actr dev keygen
rand.workspace = true

# DLQ storage (for actr dlq subcommand)
actr-runtime-mailbox = { path = "../core/runtime-mailbox", version = "0.3.1" }


# Direct access to config/protocol for CLI-specific types
# (These have different APIs than actr umbrella re-exports)
actr-config = { path = "../core/config", version = "0.3.1" }
actr-protocol = { path = "../core/protocol", version = "0.3.1" }

# Version / fingerprint utilities
actr-service-compat = { path = "../core/service-compat", version = "0.3.1" }

# Protoc code generator - CLI specific tool
actr-framework-protoc-codegen = { path = "../tools/protoc-gen/rust", version = "0.3.1" }

# Command line interface
clap = { version = "4.5", features = ["derive", "cargo"] }
clap_complete = "4.5"
dialoguer = "0.12.0"

# Error handling
anyhow = "1.0"
thiserror.workspace = true

# Async traits
async-trait = "0.1"

# File system operations
fs_extra = "1.3"
tempfile = "3.22"
dirs = "5.0"
walkdir = "2.5"
rusqlite = { version = "0.32", features = ["bundled"], optional = true }

# Process management
tokio = { version = "1.48", features = ["full"] }

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
owo-colors = "4.1.0"
comfy-table = "7.1"

# HTTP client for proto dependencies
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-native-roots", "stream"] }

# Git support
git2 = "0.20"

# Cargo integration
cargo_metadata = "0.18"

# Template engine
handlebars = "5.1"

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
toml.workspace = true
toml_edit = "0.22"

# Date/time handling for lock files
chrono = { version = "0.4", features = ["serde"] }

# Hashing for integrity verification
md5 = "0.7"
sha2 = "0.10"
hex = "0.4"

# Signing (for actr pkg sign)
ed25519-dalek = "2"
base64 = "0.22"
url = "2.5"

# Protocol buffer generation
prost-build = "0.14"
prost = "0.14"
prost-types = "0.14"

# Code generation utilities (for protoc-gen-actrframework)
quote = "1.0"
proc-macro2 = "1.0"
bytes = "1.0"
heck = "0.5"
tokio-tungstenite = { version = "0.28.0", features = ["rustls-tls-native-roots"] }
futures-util = "0.3"
uuid = { version = "1.19.0", features = ["v4"] }
rust-embed = "8.11.0"
actr-mock-actrix = { workspace = true, optional = true }

# Web server for `actr run --web`
axum = "0.8"
tower-http = { version = "0.6", features = ["fs", "cors", "set-header"] }
mime_guess = "2.0"

[target.'cfg(unix)'.dependencies]
nix = { version = "0.29", features = ["process", "signal", "fs"] }

[dev-dependencies]
tokio-test = "0.4"
tempfile = "3.22"
actr-cli = { path = ".", features = ["test-utils"] }

[lints.clippy]
collapsible_if = "allow"