8000 GitHub - bryango/faketty-lib: Wrapper to exec a command in a pty, even if redirecting the output (library, forked from dtolnay/faketty)
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Wrapper to exec a command in a pty, even if redirecting the output (library, forked from dtolnay/faketty)

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

bryango/faketty-lib

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

faketty-lib

This is a fork of dtolnay/faketty in order to expose a library for use with development. See below for m 7864 ore details.

We track upstream releases by identifying the minor version number. If there is an API change in the current library crate (however unlikely), the major release will be bumped, while the minor release will be kept in sync with the upstream project.

crates.io build status

A wrapper binary to exec a command in a pty, even if redirecting the output.

This allows logging the stdout and stderr (separately) of a process, without the output being different from what you'd see in the terminal if you weren't logging anything.

$ cargo install faketty
$ faketty bazel build :target >log/out 2>log/err
          ~~~~~~~~~~~~~~~~~~~ command to run

Background

When redirecting stdout/err to a pipe or file, a process may detect the output is no longer going to a tty (because it has no width/height, baud rate, etc) and may change its behavior accordingly. For example many programs that involve a progress bar or colored text in a terminal disable those things when the output is not going to a terminal.

There is a script(1) command which makes it possible to redirect a command's terminal-style output by executing it inside a pseudoterminal (pty) – a bidirectional pipe that also has width, height, etc and tricks the process into thinking it is talking to a real terminal. However, script only uses a single pty, which makes it impossible to demultiplex stdout and stderr to different places.

The faketty command in this repo is similar to script --quiet --return --command '...' /dev/null except that it preserves distinct stdout and stderr streams.


As a library

faketty can be added to the [dev-dependencies] of cargo projects, in which case we can drop the default clap crate (for command line argument parsing) with --no-default-features:

cargo add faketty --dev --no-default-features

A minimal example of the library usage is provided by faketty-run. Note that faketty::run_command calls exec(3), therefore the child process will replace the current (parent) process.


License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this program by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Wrapper to exec a command in a pty, even if redirecting the output (library, forked from dtolnay/faketty)

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 97.5%
  • Shell 2.5%
0