mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-03 07:04:53 +00:00
Move stdin formatting to its own command file (#6981)
## Summary This is similar to `commands::check` vs. `commands::check_stdin`, and gets the logic out of the parent file (`lib.rs`). It also ensures that we avoid formatting files that should be excluded when `--force-exclude` is provided.
This commit is contained in:
parent
34221346c1
commit
25c374856a
5 changed files with 51 additions and 20 deletions
|
@ -13,10 +13,8 @@ use ruff::logging::{set_up_logging, LogLevel};
|
|||
use ruff::settings::types::SerializationFormat;
|
||||
use ruff::settings::{flags, CliSettings};
|
||||
use ruff::{fs, warn_user_once};
|
||||
use ruff_python_formatter::{format_module, PyFormatOptions};
|
||||
|
||||
use crate::args::{Args, CheckCommand, Command, FormatCommand};
|
||||
use crate::commands::check_stdin::read_from_stdin;
|
||||
use crate::printer::{Flags as PrinterFlags, Printer};
|
||||
|
||||
pub mod args;
|
||||
|
@ -26,6 +24,7 @@ mod diagnostics;
|
|||
mod panic;
|
||||
mod printer;
|
||||
pub mod resolve;
|
||||
mod stdin;
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
pub enum ExitStatus {
|
||||
|
@ -77,7 +76,7 @@ fn change_detected(paths: &[PathBuf]) -> Option<ChangeKind> {
|
|||
None
|
||||
}
|
||||
|
||||
/// Returns true if the linter should read from standard input.
|
||||
/// Returns true if the command should read from standard input.
|
||||
fn is_stdin(files: &[PathBuf], stdin_filename: Option<&Path>) -> bool {
|
||||
// If the user provided a `--stdin-filename`, always read from standard input.
|
||||
if stdin_filename.is_some() {
|
||||
|
@ -163,15 +162,7 @@ fn format(args: FormatCommand, log_level: LogLevel) -> Result<ExitStatus> {
|
|||
let (cli, overrides) = args.partition();
|
||||
|
||||
if is_stdin(&cli.files, cli.stdin_filename.as_deref()) {
|
||||
let unformatted = read_from_stdin()?;
|
||||
let options = cli
|
||||
.stdin_filename
|
||||
.as_deref()
|
||||
.map(PyFormatOptions::from_extension)
|
||||
.unwrap_or_default();
|
||||
let formatted = format_module(&unformatted, options)?;
|
||||
stdout().lock().write_all(formatted.as_code().as_bytes())?;
|
||||
Ok(ExitStatus::Success)
|
||||
commands::format_stdin::format_stdin(&cli, &overrides)
|
||||
} else {
|
||||
commands::format::format(&cli, &overrides, log_level)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue