6 releases
Uses old Rust 2015
0.2.0 | Nov 8, 2016 |
---|---|
0.1.4 | Aug 13, 2016 |
0.1.3 | Jan 26, 2016 |
0.1.2 | Dec 30, 2015 |
#25 in #pty
Used in 2 crates
15KB
394 lines
pty-shell
An extension of pty crate.
https://speakerdeck.com/hibariya/control-a-shell-with-pty-shell
Usage
Add this to your Cargo.toml
:
[dependencies]
pty-shell = '0.2.0'
For example, add src/main.rs as following:
extern crate pty_shell;
use pty_shell::{winsize, PtyShell, PtyHandler};
struct Shell;
impl PtyHandler for Shell {
fn input(&mut self, input: &[u8]) {
/* do something with input */
}
fn output(&mut self, output: &[u8]) {
/* do something with output */
}
fn resize(&mut self, winsize: &winsize::Winsize) {
/* do something with winsize */
}
fn shutdown(&mut self) {
/* prepare for shutdown */
}
}
fn main() {
let child = pty::fork().unwrap();
child.exec("bash");
child.proxy(Shell);
child.wait();
}
Callback Style
Use pty_shell::PtyCallback
.
child.proxy(
PtyCallback::new()
.input(|input| { /* do something with input */ })
.output(|output| { /* do something with output */ })
.build()
)
);
Event types
- input
- output
- resize
- shutdown
Contributing
- Fork it ( https://github.com/hibariya/pty-shell/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
License
Copyright (c) 2015 Hika Hibariya
Distributed under the MIT License.
Dependencies
~4MB
~72K SLoC