#command-line-interface #decompression #plugin #file-format #exit-code

app crush-cli

Command-line interface for the Crush compression library

2 releases

0.1.1 Feb 21, 2026
0.1.0 Feb 8, 2026

#971 in Parser implementations

MIT license

230KB
4.5K SLoC

crush-cli

Command-line interface for the crush-core high-performance parallel compression library.

Installation

From crates.io:

cargo install crush-cli

From source:

git clone https://github.com/john-agentic-ai-tools/crush.git
cd crush
cargo install --path crush-cli

Usage

Compress

# Compress a file
crush compress file.txt

# Compress multiple files
crush compress file1.txt file2.txt file3.txt

# Choose a compression level (fast, balanced, best)
crush compress --level fast largefile.dat

# Use a specific plugin
crush compress --plugin deflate data.bin

# Compress to a specific output path
crush compress input.txt --output /backup/input.txt.crush

# Force overwrite existing compressed files
crush compress --force document.txt

# Set a compression timeout (in seconds)
crush compress --timeout 60 largefile.dat

# Pipeline: stdin to file
cat file.txt | crush compress --output file.txt.crush

# Pipeline: stdin to stdout
cat file.txt | crush compress --stdout > file.txt.crush

Decompress

# Decompress a file (outputs to <name> with .crush extension stripped)
crush decompress file.txt.crush

# Decompress multiple files
crush decompress file1.crush file2.crush

# Decompress to a specific output path
crush decompress archive.crush --output /tmp/restored.txt

# Decompress to stdout for piping
crush decompress data.crush --stdout | grep pattern

# Pipeline: stdin to stdout
cat data.crush | crush decompress --stdout

# Force overwrite existing files
crush decompress --force document.txt.crush

Inspect

# Inspect compressed file metadata
crush inspect file.txt.crush

# Inspect multiple files with summary statistics
crush inspect --summary *.crush

# Output as JSON
crush inspect --format json archive.crush

# Output as CSV
crush inspect --format csv *.crush > report.csv

Plugins

# List all available compression plugins
crush plugins list

# List plugins in JSON format
crush plugins list --format json

# Show detailed information about a plugin
crush plugins info deflate

# Test a plugin's functionality
crush plugins test deflate

Configuration

Crush stores its configuration in a TOML file at the OS config directory (~/.config/crush/config.toml on Linux).

# Set a configuration value
crush config set compression.level fast

# Get a configuration value
crush config get compression.level

# List all configuration
crush config list

# Reset to defaults
crush config reset --yes

Configuration keys:

Key Values Default
compression.default-plugin Plugin name or auto auto
compression.level fast, balanced, best balanced
compression.timeout-seconds Seconds (0 = no timeout) 0
output.progress-bars true, false true
output.color auto, always, never auto
output.quiet true, false false
logging.format human, json human
logging.level error, warn, info, debug, trace info
logging.file File path (empty = stderr) (empty)

Configuration can also be set via environment variables with the CRUSH_ prefix (e.g., CRUSH_COMPRESSION_LEVEL=fast).

Global Flags

# Verbose output (-v for debug, -vv for trace)
crush -v compress file.txt
crush -vv compress file.txt

# Quiet mode (suppress all output except errors)
crush -q compress file.txt

# JSON log format
crush --log-format json compress file.txt

# Log to a file
crush --log-file /tmp/crush.log compress file.txt

Exit Codes

Code Meaning
0 Success
1 Operational error (I/O, compression failure)
2 Configuration or usage error
130 Operation cancelled (Ctrl+C)

Graceful Cancellation

Press Ctrl+C during any operation to cancel gracefully. Crush will clean up partial output and exit with code 130.

Development

cargo build --bin crush
cargo test -p crush-cli
cargo bench -p crush-cli

License

MIT

Dependencies

~17–28MB
~453K SLoC