feat: add --style-edition option to rustfmt binary
This commit is contained in:
parent
7c41e2bfba
commit
b6c89fc657
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
use crate::rustfmt::{
|
use crate::rustfmt::{
|
||||||
load_config, CliOptions, Color, Config, Edition, EmitMode, FileLines, FileName,
|
load_config, CliOptions, Color, Config, Edition, EmitMode, FileLines, FileName,
|
||||||
FormatReportFormatterBuilder, Input, Session, Verbosity,
|
FormatReportFormatterBuilder, Input, Session, StyleEdition, Verbosity,
|
||||||
};
|
};
|
||||||
|
|
||||||
const BUG_REPORT_URL: &str = "https://github.com/rust-lang/rustfmt/issues/new?labels=bug";
|
const BUG_REPORT_URL: &str = "https://github.com/rust-lang/rustfmt/issues/new?labels=bug";
|
||||||
@ -129,7 +129,12 @@ fn make_opts() -> Options {
|
|||||||
found reverts to the input file path",
|
found reverts to the input file path",
|
||||||
"[Path for the configuration file]",
|
"[Path for the configuration file]",
|
||||||
);
|
);
|
||||||
opts.optopt("", "edition", "Rust edition to use", "[2015|2018|2021]");
|
opts.optopt(
|
||||||
|
"",
|
||||||
|
"edition",
|
||||||
|
"Rust edition to use",
|
||||||
|
"[2015|2018|2021|2024]",
|
||||||
|
);
|
||||||
opts.optopt(
|
opts.optopt(
|
||||||
"",
|
"",
|
||||||
"color",
|
"color",
|
||||||
@ -181,6 +186,12 @@ fn make_opts() -> Options {
|
|||||||
"skip-children",
|
"skip-children",
|
||||||
"Don't reformat child modules (unstable).",
|
"Don't reformat child modules (unstable).",
|
||||||
);
|
);
|
||||||
|
opts.optopt(
|
||||||
|
"",
|
||||||
|
"style-edition",
|
||||||
|
"The edition of the Style Guide (unstable).",
|
||||||
|
"[2015|2018|2021|2024]",
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
opts.optflag("v", "verbose", "Print verbose output");
|
opts.optflag("v", "verbose", "Print verbose output");
|
||||||
@ -525,6 +536,7 @@ struct GetOptsOptions {
|
|||||||
backup: bool,
|
backup: bool,
|
||||||
check: bool,
|
check: bool,
|
||||||
edition: Option<Edition>,
|
edition: Option<Edition>,
|
||||||
|
style_edition: Option<StyleEdition>,
|
||||||
color: Option<Color>,
|
color: Option<Color>,
|
||||||
file_lines: FileLines, // Default is all lines in all files.
|
file_lines: FileLines, // Default is all lines in all files.
|
||||||
unstable_features: bool,
|
unstable_features: bool,
|
||||||
@ -556,6 +568,10 @@ pub fn from_matches(matches: &Matches) -> Result<GetOptsOptions> {
|
|||||||
if let Some(ref file_lines) = matches.opt_str("file-lines") {
|
if let Some(ref file_lines) = matches.opt_str("file-lines") {
|
||||||
options.file_lines = file_lines.parse()?;
|
options.file_lines = file_lines.parse()?;
|
||||||
}
|
}
|
||||||
|
if let Some(ref edition_str) = matches.opt_str("style-edition") {
|
||||||
|
options.style_edition =
|
||||||
|
Some(style_edition_from_style_edition_str(edition_str)?);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
let mut unstable_options = vec![];
|
let mut unstable_options = vec![];
|
||||||
if matches.opt_present("skip-children") {
|
if matches.opt_present("skip-children") {
|
||||||
@ -567,6 +583,9 @@ pub fn from_matches(matches: &Matches) -> Result<GetOptsOptions> {
|
|||||||
if matches.opt_present("file-lines") {
|
if matches.opt_present("file-lines") {
|
||||||
unstable_options.push("`--file-lines`");
|
unstable_options.push("`--file-lines`");
|
||||||
}
|
}
|
||||||
|
if matches.opt_present("style-edition") {
|
||||||
|
unstable_options.push("`--style-edition`");
|
||||||
|
}
|
||||||
if !unstable_options.is_empty() {
|
if !unstable_options.is_empty() {
|
||||||
let s = if unstable_options.len() == 1 { "" } else { "s" };
|
let s = if unstable_options.len() == 1 { "" } else { "s" };
|
||||||
return Err(format_err!(
|
return Err(format_err!(
|
||||||
@ -688,6 +707,9 @@ fn apply_to(self, config: &mut Config) {
|
|||||||
if let Some(edition) = self.edition {
|
if let Some(edition) = self.edition {
|
||||||
config.set_cli().edition(edition);
|
config.set_cli().edition(edition);
|
||||||
}
|
}
|
||||||
|
if let Some(edition) = self.style_edition {
|
||||||
|
config.set().style_edition(edition);
|
||||||
|
}
|
||||||
if self.check {
|
if self.check {
|
||||||
config.set_cli().emit_mode(EmitMode::Diff);
|
config.set_cli().emit_mode(EmitMode::Diff);
|
||||||
} else if let Some(emit_mode) = self.emit_mode {
|
} else if let Some(emit_mode) = self.emit_mode {
|
||||||
@ -723,6 +745,16 @@ fn edition_from_edition_str(edition_str: &str) -> Result<Edition> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn style_edition_from_style_edition_str(edition_str: &str) -> Result<StyleEdition> {
|
||||||
|
match edition_str {
|
||||||
|
"2015" => Ok(StyleEdition::Edition2015),
|
||||||
|
"2018" => Ok(StyleEdition::Edition2018),
|
||||||
|
"2021" => Ok(StyleEdition::Edition2021),
|
||||||
|
"2024" => Ok(StyleEdition::Edition2024),
|
||||||
|
_ => Err(format_err!("Invalid value for `--style-edition`")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn emit_mode_from_emit_str(emit_str: &str) -> Result<EmitMode> {
|
fn emit_mode_from_emit_str(emit_str: &str) -> Result<EmitMode> {
|
||||||
match emit_str {
|
match emit_str {
|
||||||
"files" => Ok(EmitMode::Files),
|
"files" => Ok(EmitMode::Files),
|
||||||
|
Loading…
Reference in New Issue
Block a user