rust-expect 0.1.0

Next-generation Expect-style terminal automation library for Rust
Documentation

rust-expect

A modern, async-first terminal automation library for Rust, inspired by the classic Expect tool.

Features

  • Async/Await First: Built on Tokio for efficient, non-blocking I/O
  • Pattern Matching: Literal strings, regular expressions, and glob patterns
  • PTY Support: Full pseudo-terminal support on Unix and Windows
  • SSH Integration: Built-in SSH session management (optional)
  • Screen Emulation: Virtual terminal with ANSI escape sequence support
  • PII Redaction: Automatic sensitive data masking
  • Dialog Scripting: Declarative conversation flows
  • Human-like Typing: Configurable typing simulation

Usage

use rust_expect::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut session = Session::spawn("bash")?;

    session.expect("$ ").await?;
    session.send("echo 'Hello!'\n").await?;
    session.expect("Hello!").await?;
    session.send("exit\n").await?;

    Ok(())
}

Feature Flags

  • ssh - SSH session support
  • mock - Mock sessions for testing
  • screen - Virtual terminal emulation
  • pii-redaction - Automatic PII masking
  • test-utils - Testing utilities
  • metrics - Performance metrics
  • full - All features

License

Licensed under MIT or Apache-2.0.