1 unstable release
Uses new Rust 2024
| 0.3.0 | Jul 13, 2025 |
|---|
#2656 in Command line utilities
245KB
4.5K
SLoC
Revoke CLI
Command-line tool for managing Revoke microservices infrastructure.
Installation
cargo install --path .
Usage
Service Management
# List all services
revoke service list
# Register a new service
revoke service register my-service -a 127.0.0.1 -p 8080 -t api -t v1
# Deregister a service
revoke service deregister service-id
# Get service details
revoke service info my-service
# Check service health
revoke service check my-service
Configuration Management
# Get configuration value
revoke config get database.url
# Set configuration value
revoke config set database.url "postgres://localhost/mydb"
# Delete configuration
revoke config delete database.url
# List configurations
revoke config list --prefix database
# Watch configuration changes
revoke config watch database.url
# Export configuration
revoke config export -o config.yaml -f yaml
# Import configuration
revoke config import config.yaml
Gateway Management
# List routes
revoke gateway routes
# Add a route
revoke gateway add-route /api/users user-service -m GET -m POST
# Remove a route
revoke gateway remove-route route-id
# View statistics
revoke gateway stats
# Test configuration
revoke gateway test -c gateway.yaml
Distributed Tracing
# List recent traces
revoke trace list -r 1h -l 100
# Get trace details
revoke trace get trace-id
# Search traces
revoke trace search "error" -r 24h
# Export traces
revoke trace export traces.json -f json -r 1h
Health Monitoring
# Check system health
revoke health check --detailed
# Check specific service
revoke health service my-service
# Monitor health status
revoke health monitor -i 5 -s user-service -s order-service
Project Management
# Initialize a new project
revoke init my-project --template microservice
# Start development environment
revoke dev --all
# Start specific services
revoke dev -s user-service -s order-service
Configuration
The CLI tool can be configured through:
- Command-line flag
--config - Environment variable
REVOKE_CONFIG - Default config file
~/.config/revoke/config.toml
Example configuration file:
consul_address = "http://localhost:8500"
config_namespace = "revoke"
trace_endpoint = "http://localhost:4317"
default_timeout = 30
Global Options
-c, --config <FILE>: Specify config file-v, --verbose: Increase verbosity (can be used multiple times)
Output Formats
Many commands support different output formats:
table: Table format (default)json: JSON formatyaml: YAML format
Example:
revoke service list --format json
Environment Variables
REVOKE_CONFIG: Config file pathCONSUL_ADDR: Consul addressRUST_LOG: Log level
Examples
Complete Service Deployment Workflow
# 1. Initialize project
revoke init my-service --template microservice
# 2. Change to project directory
cd my-service
# 3. Start development environment
revoke dev --all
# 4. Check service status
revoke service list
revoke health check
# 5. Configure service
revoke config set my-service.database.url "postgres://localhost/mydb"
revoke config set my-service.cache.ttl "300"
# 6. View service traces
revoke trace list -s my-service
Monitoring and Debugging
# Real-time health monitoring
revoke health monitor --all
# View gateway statistics
revoke gateway stats
# Search error traces
revoke trace search "status_code:500" -r 1h
# Export configuration backup
revoke config export -o backup.yaml
Project Templates
The init command supports several templates:
basic: Minimal Rust projectmicroservice: Service with HTTP APIgateway: API gateway projectfull-stack: Complete microservices setup
Template Features
Microservice Template
- Axum HTTP server
- Service registration
- Health endpoints
- Configuration integration
- Distributed tracing
Gateway Template
- Pingora-based gateway
- Route configuration
- Load balancing setup
- Circuit breaker configuration
Full-stack Template
- Multiple services
- Gateway configuration
- Docker Compose setup
- Development scripts
Advanced Usage
Custom Commands
Create custom commands by extending the CLI:
use clap::Parser;
use revoke_cli::commands::CustomCommand;
#[derive(Parser)]
struct MyCommand {
#[arg(short, long)]
name: String,
}
impl CustomCommand for MyCommand {
async fn execute(&self) -> Result<()> {
println!("Hello, {}!", self.name);
Ok(())
}
}
Scripting
The CLI is designed to be scriptable:
#!/bin/bash
# Deploy script
services=$(revoke service list --format json | jq -r '.[] | .name')
for service in $services; do
echo "Checking $service..."
revoke service check $service
if [ $? -ne 0 ]; then
echo "Service $service is unhealthy!"
exit 1
fi
done
echo "All services are healthy!"
Troubleshooting
Common Issues
- Connection refused: Check if Consul is running
- Service not found: Verify service name and registration
- Permission denied: Check file permissions for config files
- Command not found: Ensure
~/.cargo/binis in PATH
Debug Mode
Enable debug logging:
RUST_LOG=debug revoke service list
Getting Help
# General help
revoke --help
# Command-specific help
revoke service --help
revoke service list --help
Dependencies
~44–63MB
~1M SLoC