cqlite-cli 0.11.0

Command-line interface for CQLite — read Apache Cassandra 5.0 SSTables without a cluster
Documentation
[package]
name = "cqlite-cli"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
rust-version.workspace = true
description = "Command-line interface for CQLite — read Apache Cassandra 5.0 SSTables without a cluster"
readme = "../README.md"

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

[dependencies]
# version is required (alongside path) so the dep resolves when published to
# crates.io. Keep this literal in sync with [workspace.package].version on every
# release (see release checklist).
cqlite-core = { path = "../cqlite-core", version = "0.11.0" }

# CLI framework
clap = { workspace = true }

# Async runtime
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros", "signal"] }

# Error handling
thiserror = { workspace = true }
anyhow = { workspace = true }

# Logging and tracing
log = { workspace = true }
env_logger = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }

# Terminal UI
colored = { workspace = true }
indicatif = { workspace = true }
console = { workspace = true }
ratatui = { workspace = true, optional = true }
crossterm = { workspace = true, optional = true }

# Serialization
serde = { workspace = true }
serde_json = { workspace = true }

# Table formatting
prettytable-rs = "0.10"

# CSV handling
csv = "1.3"

# Hex encoding for blob display
hex = "0.4"

# Configuration parsing
toml = { workspace = true }
serde_yaml = { workspace = true }
dirs = { workspace = true }

# Date/time handling
chrono = { workspace = true }

# Regular expressions
regex = "1.10"

# Base64 encoding for binary data display
base64 = "0.21"

# System memory monitoring (cross-platform)
sysinfo = "0.30"

# Line editing for REPL
rustyline = "14.0"

# Development dependencies
[dev-dependencies]
# Arrow/Parquet readers for Parquet output validation tests (the writer itself
# lives in cqlite-core behind its `parquet` feature, Epic #682)
arrow = { workspace = true }
parquet = { workspace = true }
num-bigint = "0.4"
bytes = { workspace = true }
tempfile = { workspace = true }
proptest = { workspace = true }
criterion = { workspace = true }
once_cell = { workspace = true }
tokio-test = { workspace = true }
rand = { workspace = true }

# CLI testing dependencies
assert_cmd = "2.0"
predicates = "3.0"
serial_test = "3.0"

# Test infrastructure dependencies
test-log = "0.2"
wait-timeout = "0.2"
rustc_version = "0.4"

# Enhanced testing framework dependencies
rstest = "0.18"                 # Parameterized tests
mockall = "0.11"                # Mocking framework
test-case = "3.0"               # Test case generation
wiremock = "0.5"                # HTTP mocking
insta = "1.34"                  # Snapshot testing
fake = "2.8"                    # Fake data generation
quickcheck = "1.0"              # Property-based testing
quickcheck_macros = "1.0"       # QuickCheck macros
# golden_tests = "1.2"            # Golden file testing (dependency not found)
trycmd = "0.14"                 # Command line testing
escargot = "0.5"                # Cargo subprocess management

# Coverage and reporting
# tarpaulin = "0.27"              # Code coverage - commented out due to availability issues
cargo-llvm-cov = "0.5"          # LLVM coverage
trybuild = "1.0"                # Compile-fail testing

# E2E validation: DuckDB reads Parquet exports to validate data integrity
duckdb = "1.1"

[features]
# M2+ production defaults: Interactive REPL with query engine
default = ["interactive", "tui", "cli-helpers"]
interactive = []
tui = ["ratatui", "crossterm"]
benchmarks = []
ci_zero_tolerance = []
integration-tests = []
# state_machine also enables cqlite-core/parquet: the CLI's Parquet output
# (gated on state_machine) consumes the core export writer (Epic #682)
state_machine = ["cqlite-core/state_machine", "cqlite-core/parquet"]
experimental = ["cqlite-core/experimental"]
# Issue #249: CLI-specific helpers (enables state_machine locally + cqlite-core/cli-helpers)
cli-helpers = ["state_machine", "cqlite-core/cli-helpers"]
# Issue #392: Write support (enables cqlite-core/write-support for CLI write operations)
write-support = ["state_machine", "cqlite-core/write-support"]