All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
Unreleased - ReleaseDate
0.6.0 - 2024-11-06
PtyProcess::get_file_handle()
returns an error if dup() failsspawn_bash()
returns error iftempfile::NamedTempFile::new()
orwrite!()
fails- Renamed
Error::SendContolError
toError::SendControlError
- MSRV updated to 1.65
- "which" functionality was added (feature gated)
- Option to skip ansi escape codes
- file descriptor leak was fixed in
PtyProcess::new()
- Documentation cleanup
- Replace error-chain with thiserror
- Make any_exp return results deterministically
- Fix argument tokenization
- Update to nix 0.25
- Fix https link to pexpect docs
- Many clippy fixes
- Remove unnecessary closures
- Fix EOF detection on nightly
- Fix examples
- PtySession now works with any stream type, e.g. also tcp streams are supported now (thanks, thomasantony)
- breaking: PtyBashSession was renamed and generalized into PtyReplSession to allow an interface for other REPLs
- better error messages in case of timeout to help debug when you expect
strings which you think are there, but are e.g. intermixed with newlines
or ctrl characters: newlines are printed as
\n
, carriage returns as\r
and control characters as^
- new:
session::spawn_python
, just as a proof of concept and documentation really, I don't think this will be used..
spawn()
now parses single/doublequotes better. E.g.ed -p '> '
is now tokenized into["ed", "-p" "'> '"]
- breaking:
execute
takes string to wait for as second argument (before it waited 10ms which was way too fragile) - if process doesn't end on SIGTERM a
kill -9
is sent after timeout is elapsed
- ctrl-* used to consume one line. As it could be that the reader did not consume all
output data yet this could have been a not-yet-read line. Therefore
send_control
no longer consumes a line.
All exp_*
methods now also return the yet unread string and/or the matched string:
exp_string
: return the yet unread stringexp_regex
: return a tuple of (yet unread string, matched string)exp_eof
andexp_nbytes
: return the yet unread string
- each execution of rexpect left a temporary file in /tmp/ this is now no longer the case
- try_read was blocking when there was no char ready (!) -> fixed