rust-expect 0.1.0

Next-generation Expect-style terminal automation library for Rust
Documentation
[[bench]]
harness = false
name = "comparative"
path = "benches/comparative.rs"

[[bench]]
harness = false
name = "pattern_matching"
path = "benches/pattern_matching.rs"

[[bench]]
harness = false
name = "screen_buffer"
path = "benches/screen_buffer.rs"

[dependencies.bitflags]
optional = true
version = "2.9"

[dependencies.bytes]
version = "1.10"

[dependencies.crossterm]
features = ["event-stream"]
version = "0.29"

[dependencies.futures]
version = "0.3"

[dependencies.libc]
version = "0.2"

[dependencies.opentelemetry]
optional = true
version = "0.31"

[dependencies.opentelemetry-otlp]
features = ["tonic", "grpc-tonic"]
optional = true
version = "0.31"

[dependencies.opentelemetry_sdk]
features = ["rt-tokio"]
optional = true
version = "0.31"

[dependencies.prometheus]
optional = true
version = "0.14"

[dependencies.rand]
version = "0.9"

[dependencies.regex]
version = "1.12"

[dependencies.russh]
optional = true
version = "0.56"

[dependencies.rust-expect-macros]
version = "0.1.0"

[dependencies.rust-pty]
version = "0.1.0"

[dependencies.serde]
features = ["derive"]
version = "1.0"

[dependencies.serde_json]
version = "1.0"

[dependencies.thiserror]
version = "2.0"

[dependencies.tokio]
features = ["full"]
version = "~1.49"

[dependencies.tokio-stream]
version = "0.1"

[dependencies.toml]
version = "0.9"

[dependencies.tracing]
version = "0.1"

[dependencies.tracing-opentelemetry]
optional = true
version = "0.32"

[dependencies.tracing-subscriber]
features = ["env-filter", "json"]
optional = true
version = "0.3"

[dependencies.vte]
optional = true
version = "0.15"

[dev-dependencies.criterion]
features = ["html_reports"]
version = "0.7"

[dev-dependencies.expectrl]
version = "0.8"

[dev-dependencies.proptest]
version = "1.9"

[[example]]
name = "basic"
path = "examples/basic.rs"

[[example]]
name = "basic_session"
path = "examples/basic_session.rs"

[[example]]
name = "dialog"
path = "examples/dialog.rs"

[[example]]
name = "error_handling"
path = "examples/error_handling.rs"

[[example]]
name = "interact_hooks"
path = "examples/interact_hooks.rs"

[[example]]
name = "interactive"
path = "examples/interactive.rs"

[[example]]
name = "large_output"
path = "examples/large_output.rs"

[[example]]
name = "metrics"
path = "examples/metrics.rs"

[[example]]
name = "mock_testing"
path = "examples/mock_testing.rs"

[[example]]
name = "multi_session"
path = "examples/multi_session.rs"

[[example]]
name = "patterns"
path = "examples/patterns.rs"

[[example]]
name = "pii_redaction"
path = "examples/pii_redaction.rs"

[[example]]
name = "screen_buffer"
path = "examples/screen_buffer.rs"

[[example]]
name = "ssh"
path = "examples/ssh.rs"

[[example]]
name = "ssh_session"
path = "examples/ssh_session.rs"

[[example]]
name = "sync_api"
path = "examples/sync_api.rs"

[[example]]
name = "transcript"
path = "examples/transcript.rs"

[[example]]
name = "windows_pty_test"
path = "examples/windows_pty_test.rs"

[[example]]
name = "zero_config"
path = "examples/zero_config.rs"

[features]
default = []
full = ["ssh", "mock", "screen", "pii-redaction", "metrics"]
insecure-skip-verify = []
legacy-encoding = []
metrics = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:tracing-opentelemetry", "dep:tracing-subscriber", "dep:prometheus"]
mock = []
pii-redaction = []
screen = ["dep:vte", "dep:bitflags"]
ssh = ["dep:russh"]
test-utils = []

[lib]
name = "rust_expect"
path = "src/lib.rs"

[lints.clippy]
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
literal_string_with_formatting_args = "allow"
match_same_arms = "allow"
missing_errors_doc = "allow"
missing_fields_in_debug = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
option_if_let_else = "allow"
redundant_pub_crate = "allow"

[lints.clippy.all]
level = "warn"
priority = -1

[lints.clippy.nursery]
level = "warn"
priority = -1

[lints.clippy.pedantic]
level = "warn"
priority = -1

[lints.rust]
missing_docs = "warn"
unsafe_code = "warn"

[package]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = false
categories = ["command-line-utilities", "development-tools::testing", "asynchronous"]
description = "Next-generation Expect-style terminal automation library for Rust"
edition = "2024"
keywords = ["expect", "pty", "terminal", "automation", "async"]
license = "MIT OR Apache-2.0"
name = "rust-expect"
readme = "README.md"
repository = "https://github.com/praxiomlabs/rust-expect"
rust-version = "1.88"
version = "0.1.0"

[target."cfg(windows)".dependencies.windows-sys]
features = ["Win32_Foundation", "Win32_System_Console", "Win32_System_Threading", "Win32_System_Pipes", "Win32_Security", "Win32_System_JobObjects", "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_Storage_FileSystem"]
version = "0.61"

[[test]]
name = "auto_config_tests"
path = "tests/auto_config_tests.rs"

[[test]]
name = "config_tests"
path = "tests/config_tests.rs"

[[test]]
name = "dialog_tests"
path = "tests/dialog_tests.rs"

[[test]]
name = "encoding_tests"
path = "tests/encoding_tests.rs"

[[test]]
name = "error_tests"
path = "tests/error_tests.rs"

[[test]]
name = "expect_integration"
path = "tests/expect_integration.rs"

[[test]]
name = "health_tests"
path = "tests/health_tests.rs"

[[test]]
name = "interact_tests"
path = "tests/interact_tests.rs"

[[test]]
name = "mock_integration"
path = "tests/mock_integration.rs"

[[test]]
name = "multi_session_tests"
path = "tests/multi_session_tests.rs"

[[test]]
name = "pattern_tests"
path = "tests/pattern_tests.rs"

[[test]]
name = "pii_tests"
path = "tests/pii_tests.rs"

[[test]]
name = "platform_tests"
path = "tests/platform_tests.rs"

[[test]]
name = "screen_tests"
path = "tests/screen_tests.rs"

[[test]]
name = "send_tests"
path = "tests/send_tests.rs"

[[test]]
name = "spawn_integration"
path = "tests/spawn_integration.rs"

[[test]]
name = "ssh_tests"
path = "tests/ssh_tests.rs"

[[test]]
name = "sync_tests"
path = "tests/sync_tests.rs"

[[test]]
name = "transcript_tests"
path = "tests/transcript_tests.rs"