diff --git a/crates/ruff_python_formatter/src/cli.rs b/crates/ruff_python_formatter/src/cli.rs index 57c73abb6b536..9a891030b0d44 100644 --- a/crates/ruff_python_formatter/src/cli.rs +++ b/crates/ruff_python_formatter/src/cli.rs @@ -12,7 +12,7 @@ use ruff_python_parser::{parse_ok_tokens, AsMode}; use ruff_text_size::Ranged; use crate::comments::collect_comments; -use crate::{format_module_ast, PreviewMode, PyFormatOptions}; +use crate::{format_module_ast, MagicTrailingComma, PreviewMode, PyFormatOptions}; #[derive(ValueEnum, Clone, Debug)] pub enum Emit { @@ -40,6 +40,8 @@ pub struct Cli { pub print_ir: bool, #[clap(long)] pub print_comments: bool, + #[clap(long, short = 'C')] + pub skip_magic_trailing_comma: bool, } pub fn format_and_debug_print(source: &str, cli: &Cli, source_path: &Path) -> Result { @@ -51,11 +53,17 @@ pub fn format_and_debug_print(source: &str, cli: &Cli, source_path: &Path) -> Re let module = parse_ok_tokens(tokens, source, source_type.as_mode(), "") .context("Syntax error in input")?; - let options = PyFormatOptions::from_extension(source_path).with_preview(if cli.preview { - PreviewMode::Enabled - } else { - PreviewMode::Disabled - }); + let options = PyFormatOptions::from_extension(source_path) + .with_preview(if cli.preview { + PreviewMode::Enabled + } else { + PreviewMode::Disabled + }) + .with_magic_trailing_comma(if cli.skip_magic_trailing_comma { + MagicTrailingComma::Ignore + } else { + MagicTrailingComma::Respect + }); let source_code = SourceCode::new(source); let formatted = format_module_ast(&module, &comment_ranges, source, options)