Expand description

A tool for automating terminal applications on alike original expect.

Using the library you can:

  • Spawn process
  • Control process
  • Interact with process’s IO(input/output).

expectrl like original expect may shine when you’re working with interactive applications. If your application is not interactive you may not find the library the best choise.

Example

An example for interacting via ftp.

use expectrl::{spawn, Regex, Eof, WaitStatus};

let mut p = spawn("ftp speedtest.tele2.net").unwrap();
p.expect(Regex("Name \\(.*\\):")).unwrap();
p.send_line("anonymous").unwrap();
p.expect("Password").unwrap();
p.send_line("test").unwrap();
p.expect("ftp>").unwrap();
p.send_line("cd upload").unwrap();
p.expect("successfully changed.\r\nftp>").unwrap();
p.send_line("pwd").unwrap();
p.expect(Regex("[0-9]+ \"/upload\"")).unwrap();
p.send_line("exit").unwrap();
p.expect(Eof).unwrap();
assert_eq!(p.wait().unwrap(), WaitStatus::Exited(p.pid(), 0));

The example inspired by the one in [philippkeller/rexpect].

For more examples, check the examples directory.

Features

  • It has an async support (To enable them you must turn on an async feature).
  • It supports logging.
  • It supports interact function.
  • It has a Windows support.

Modules

This module contains a InteractOptions which allows a castomization of crate::Session::interact flow.

This module contains a platform independent abstraction over an os process.

This module contains a list of special Sessions that can be spawned.

This module contains a system independent Session representation.

Stream module contains a set of IO (write/read) wrappers.

Macros

Check macros provides a convient way to check if things are available in a stream of a process.

Structs

Any matches uses all provided lookups and returns a match from a first successfull match.

Captures is a represention of matched pattern.

Eof consider a match when an EOF is reached.

NBytes matches N bytes from the stream.

Regex tries to look up a match by a regex.

Enums

ControlCode represents the standard ASCII control codes wiki

An main error type used in crate.

Possible return values from wait() or waitpid().

Traits

Needle an interface for search of a match in a buffer.

Functions

Spawn spawnes a new session.