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.