Crate rust_expect

Crate rust_expect 

Source
Expand description

rust-expect: Next-generation terminal automation library

This crate provides an Expect-style API for automating interactive terminal applications. It supports local PTY sessions, SSH connections, and mock sessions for testing.

§Features

  • Async-first design with Tokio runtime
  • Cross-platform PTY support via rust-pty
  • Flexible pattern matching with regex, literal, and custom matchers
  • SSH backend for remote automation (feature: ssh)
  • Mock backend for testing (feature: mock)
  • Screen buffer with ANSI parsing (feature: screen)
  • PII redaction for sensitive data handling (feature: pii-redaction)

§Example

use rust_expect::prelude::*;

#[tokio::main]
async fn main() -> Result<(), ExpectError> {
    let mut session = Session::spawn("/bin/bash", &[]).await?;
    session.expect("$").await?;
    session.send_line("echo hello").await?;
    session.expect("hello").await?;
    Ok(())
}

Re-exports§

pub use auto_config::LocaleInfo;
pub use auto_config::ShellType;
pub use auto_config::detect_shell;
pub use backend::BackendType;
pub use backend::PtyConfig;
pub use backend::PtySpawner;
pub use config::BufferConfig;
pub use config::EncodingConfig;
pub use config::HumanTypingConfig;
pub use config::InteractConfig;
pub use config::LineEnding;
pub use config::LogFormat;
pub use config::LoggingConfig;
pub use config::SessionConfig;
pub use config::TimeoutConfig;
pub use dialog::Dialog;
pub use dialog::DialogBuilder;
pub use dialog::DialogStep;
pub use encoding::DetectedEncoding;
pub use encoding::EncodedText;
pub use encoding::LineEndingStyle;
pub use encoding::decode_utf8_lossy;
pub use encoding::detect_encoding_from_env;
pub use encoding::detect_line_ending;
pub use encoding::normalize_line_endings;
pub use encoding::strip_ansi;
pub use error::ExpectError;
pub use error::Result;
pub use error::SpawnError;
pub use expect::CacheStats;
pub use expect::CompiledRegex;
pub use expect::GLOBAL_CACHE;
pub use expect::Matcher;
pub use expect::Pattern;
pub use expect::PatternManager;
pub use expect::PatternSet;
pub use expect::RegexCache;
pub use expect::RingBuffer;
pub use expect::get_regex;
pub use health::HealthChecker;
pub use health::HealthStatus;
pub use interact::InteractAction;
pub use interact::InteractBuilder;
pub use interact::InteractContext;
pub use interact::InteractEndReason;
pub use interact::InteractResult;
pub use interact::InteractionMode;
pub use interact::ResizeContext;
pub use interact::ResizeHook;
pub use interact::TerminalMode;
pub use interact::TerminalState;
pub use metrics::Counter;
pub use metrics::Gauge;
pub use metrics::Histogram;
pub use metrics::MetricsRegistry;
pub use metrics::SessionMetrics;
pub use multi::GroupBuilder;
pub use multi::GroupManager;
pub use multi::GroupResult;
pub use multi::MultiSessionManager;
pub use multi::PatternSelector;
pub use multi::ReadyType;
pub use multi::SelectResult;
pub use multi::SendResult;
pub use multi::SessionGroup;
pub use send::AnsiSend;
pub use send::BasicSend;
pub use send::HumanTyper;
pub use send::Sender;
pub use session::QuickSession;
pub use session::Session;
pub use session::SessionBuilder;
pub use sync::SyncSession;
pub use sync::block_on;
pub use transcript::Player;
pub use transcript::Recorder;
pub use transcript::Transcript;
pub use transcript::TranscriptEvent;
pub use types::ControlChar;
pub use types::Dimensions;
pub use types::ExpectResult;
pub use types::Match;
pub use types::ProcessExitStatus;
pub use types::SessionId;
pub use types::SessionState;
pub use util::Backpressure;
pub use util::Deadline;
pub use util::TimeoutExt;

Modules§

auto_config
Automatic configuration detection.
backend
Backend module for different transport implementations.
config
Configuration types for rust-expect.
dialog
Dialog-based interaction scripting.
encoding
Encoding detection and conversion utilities.
error
Error types for rust-expect.
expect
Expect pattern matching module.
health
Health checking and diagnostics.
interact
Interactive terminal sessions.
metrics
Metrics collection and reporting.
multi
Multi-session management and selection.
prelude
Convenient re-exports for common rust-expect usage.
send
Send module for writing data to sessions.
session
Session module for managing spawned process interactions.
sync
Synchronous wrapper for async expect operations.
transcript
Session transcripts and recording.
types
Common types for rust-expect.
util
Utility modules for expect operations.
validation
Command and argument validation.

Macros§

dialog
Define an interactive dialog script.
patterns
Define a set of patterns for use with expect operations.
regex
Compile-time validated regex pattern.
timeout
Parse a human-readable timeout specification.