Crate subx_cli

Source
Expand description

SubX: Intelligent Subtitle Processing Library

SubX is a comprehensive Rust library for intelligent subtitle file processing, featuring AI-powered matching, format conversion, audio synchronization, and advanced encoding detection capabilities.

§Key Features

  • AI-Powered Matching: Intelligent subtitle file matching and renaming
  • Format Conversion: Support for multiple subtitle formats (SRT, ASS, VTT, etc.)
  • Audio Synchronization: Advanced audio-subtitle timing adjustment
  • Encoding Detection: Automatic character encoding detection and conversion
  • Parallel Processing: High-performance batch operations
  • Configuration Management: Flexible multi-source configuration system

§Architecture Overview

The library is organized into several key modules:

  • cli - Command-line interface and argument parsing
  • commands - Implementation of all SubX commands
  • config - Configuration management and validation
  • core - Core processing engines (formats, matching, sync)
  • error - Comprehensive error handling system
  • services - External service integrations (AI, audio processing)

§Quick Start

use subx_cli::config::{TestConfigService, ConfigService};

// Create a configuration service
let config_service = TestConfigService::with_defaults();
let config = config_service.config();

// Use the configuration for processing...

§Error Handling

All operations return a Result<T> type that wraps error::SubXError:

use subx_cli::{Result, error::SubXError};

fn example_operation() -> Result<String> {
    // This could fail with various error types
    Err(SubXError::config("Missing configuration"))
}

§Configuration

SubX supports dependency injection-based configuration:

use subx_cli::config::{TestConfigService, Config};

// Create configuration service with AI settings
let config_service = TestConfigService::with_ai_settings("openai", "gpt-4.1");
let config = config_service.config();

// Access configuration values
println!("AI Provider: {}", config.ai.provider);
println!("AI Model: {}", config.ai.model);

§Performance Considerations

  • Use core::parallel for batch operations on large file sets
  • Configure appropriate cache settings for repeated operations
  • Consider memory usage when processing large audio files

§Thread Safety

The library is designed to be thread-safe where appropriate:

  • Configuration manager uses Arc<RwLock<T>> for shared state
  • File operations include rollback capabilities for atomicity
  • Parallel processing uses safe concurrency patterns

§Feature Flags

SubX supports several optional features:

- ai - AI service integrations (default)
- audio - Audio processing capabilities (default)  
- parallel - Parallel processing support (default)

Re-exports§

pub use config::Config;
pub use config::ConfigService;
pub use config::EnvironmentProvider;
pub use config::ProductionConfigService;
pub use config::SystemEnvironmentProvider;
pub use config::TestConfigBuilder;
pub use config::TestConfigService;
pub use config::TestEnvironmentProvider;

Modules§

cli
Command-line interface for the SubX subtitle processing tool.
commands
SubX command execution module.
config
Configuration management module for SubX.
core
Core processing engine for SubX.
error
Comprehensive error types for the SubX CLI application operations.
services
External services integration for SubX.

Macros§

create_default_test_config_service
Create a temporary test configuration service with default settings.
create_production_config_service_with_empty_env
Create a ProductionConfigService with empty environment variables for testing.
create_production_config_service_with_env
Create a temporary ProductionConfigService with environment variable provider for test functions.
create_test_config_service
Create a temporary test configuration service for use in test functions.
test_production_config_with_env
Execute ProductionConfigService tests with specified environment variable mapping.
test_production_config_with_openai_env
Execute ProductionConfigService tests with OPENAI environment variables.
test_with_ai_config
Run a test with specific AI configuration.
test_with_ai_config_and_key
Run a test with specific AI configuration including API key.
test_with_config
Run a test with a custom configuration builder.
test_with_default_config
Run a test with the default configuration.
test_with_parallel_config
Run a test with specific parallel processing configuration.
test_with_sync_config
Run a test with specific sync configuration.

Structs§

App
Main application structure with dependency injection support.

Constants§

VERSION
Library version string.

Type Aliases§

Result
Convenient type alias for Result<T, SubXError>.