4.2 KiB
4.2 KiB
Rhai Client Binary
A command-line client for executing Rhai scripts on remote workers via Redis.
Binary: client
Installation
Build the binary:
cargo build --bin client --release
Usage
# Basic usage - requires caller and circle keys
client --caller-key <CALLER_KEY> --circle-key <CIRCLE_KEY>
# Execute inline script
client -c <CALLER_KEY> -k <CIRCLE_KEY> --script "print('Hello World!')"
# Execute script from file
client -c <CALLER_KEY> -k <CIRCLE_KEY> --file script.rhai
# Use specific worker (defaults to circle key)
client -c <CALLER_KEY> -k <CIRCLE_KEY> -w <WORKER_KEY> --script "2 + 2"
# Custom Redis and timeout
client -c <CALLER_KEY> -k <CIRCLE_KEY> --redis-url redis://localhost:6379/1 --timeout 60
# Remove timestamps from logs
client -c <CALLER_KEY> -k <CIRCLE_KEY> --no-timestamp
# Increase verbosity
client -c <CALLER_KEY> -k <CIRCLE_KEY> -v --script "debug_info()"
Command-Line Options
Option | Short | Default | Description |
---|---|---|---|
--caller-key |
-c |
Required | Caller public key (your identity) |
--circle-key |
-k |
Required | Circle public key (execution context) |
--worker-key |
-w |
circle-key |
Worker public key (target worker) |
--redis-url |
-r |
redis://localhost:6379 |
Redis connection URL |
--script |
-s |
Rhai script to execute | |
--file |
-f |
Path to Rhai script file | |
--timeout |
-t |
30 |
Timeout for script execution (seconds) |
--no-timestamp |
false |
Remove timestamps from log output | |
--verbose |
-v |
Increase verbosity (stackable) |
Execution Modes
Inline Script Execution
# Execute a simple calculation
client -c caller_123 -k circle_456 -s "let result = 2 + 2; print(result);"
# Execute with specific worker
client -c caller_123 -k circle_456 -w worker_789 -s "get_user_data()"
Script File Execution
# Execute script from file
client -c caller_123 -k circle_456 -f examples/data_processing.rhai
# Execute with custom timeout
client -c caller_123 -k circle_456 -f long_running_script.rhai -t 120
Interactive Mode
# Enter interactive REPL mode (when no script or file provided)
client -c caller_123 -k circle_456
# Interactive mode with verbose logging
client -c caller_123 -k circle_456 -v --no-timestamp
Interactive Mode
When no script (-s
) or file (-f
) is provided, the client enters interactive mode:
🔗 Starting Rhai Client
📋 Configuration:
Caller Key: caller_123
Circle Key: circle_456
Worker Key: circle_456
Redis URL: redis://localhost:6379
Timeout: 30s
✅ Connected to Redis at redis://localhost:6379
🎮 Entering interactive mode
Type Rhai scripts and press Enter to execute. Type 'exit' or 'quit' to close.
rhai> let x = 42; print(x);
Status: completed
Output: 42
rhai> exit
👋 Goodbye!
Configuration Examples
Development Usage
# Simple development client
client -c dev_user -k dev_circle
# Development with clean logs
client -c dev_user -k dev_circle --no-timestamp -v
Production Usage
# Production client with specific worker
client \
--caller-key prod_user_123 \
--circle-key prod_circle_456 \
--worker-key prod_worker_789 \
--redis-url redis://redis-cluster:6379/0 \
--timeout 300 \
--file production_script.rhai
Batch Processing
# Process multiple scripts
for script in scripts/*.rhai; do
client -c batch_user -k batch_circle -f "$script" --no-timestamp
done
Key Concepts
- Caller Key: Your identity - used for authentication and tracking
- Circle Key: Execution context - defines the environment/permissions
- Worker Key: Target worker - which worker should execute the script (defaults to circle key)
Error Handling
The client provides clear error messages for:
- Missing required keys
- Redis connection failures
- Script execution timeouts
- Worker unavailability
- Script syntax errors
Dependencies
rhai_dispatcher
: Core client library for Redis-based script executionredis
: Redis client for task queue communicationclap
: Command-line argument parsingenv_logger
: Logging infrastructuretokio
: Async runtime