mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-27 20:42:10 +00:00

## Summary When you run Ruff via stdin, and pass `format` or `check --fix`, we typically write the changed or unchanged contents to stdout. It turns out we forgot to do this when the file is _excluded_, so if you run `ruff format /path/to/excluded/file.py`, we don't write _anything_ to `stdout`. This led to a bug in the LSP whereby we deleted file contents for third-party files. The right thing to do here is write back the unchanged contents, as it should always be safe to write the output of stdout back to a file.
17 lines
506 B
Rust
17 lines
506 B
Rust
use std::io;
|
|
use std::io::{Read, Write};
|
|
|
|
/// Read a string from `stdin`.
|
|
pub(crate) fn read_from_stdin() -> Result<String, io::Error> {
|
|
let mut buffer = String::new();
|
|
io::stdin().lock().read_to_string(&mut buffer)?;
|
|
Ok(buffer)
|
|
}
|
|
|
|
/// Read bytes from `stdin` and write them to `stdout`.
|
|
pub(crate) fn parrot_stdin() -> Result<(), io::Error> {
|
|
let mut buffer = String::new();
|
|
io::stdin().lock().read_to_string(&mut buffer)?;
|
|
io::stdout().write_all(buffer.as_bytes())?;
|
|
Ok(())
|
|
}
|