Auto merge of #18009 - Veykril:reformat-no-rustup, r=Veykril
fix: do not assume rustup is installed in xtask codegen take 2 7d9e4fcc07e5de94e37b73436147cdbbaa35dbdc broke this on rustup toolchains, the `cmd` command is trying to be too smart here
This commit is contained in:
commit
bfaf63144a
1 changed files with 26 additions and 22 deletions
|
|
@ -126,31 +126,35 @@ impl fmt::Display for Location {
|
|||
}
|
||||
}
|
||||
|
||||
fn rustfmt_executable(sh: &Shell) -> &str {
|
||||
// First try explicitly requesting the stable channel via rustup in case nightly is being used by default,
|
||||
// then plain rustfmt in case rustup isn't being used to manage the compiler (e.g. when using Nix).
|
||||
for executable in ["rustup run stable rustfmt", "rustfmt"] {
|
||||
let version = cmd!(sh, "{executable} --version").read().unwrap_or_default();
|
||||
if version.contains("stable") {
|
||||
return executable;
|
||||
}
|
||||
}
|
||||
|
||||
panic!(
|
||||
"Failed to run rustfmt from toolchain 'stable'. \
|
||||
Please run `rustup component add rustfmt --toolchain stable` to install it.",
|
||||
);
|
||||
}
|
||||
|
||||
fn reformat(text: String) -> String {
|
||||
let sh = Shell::new().unwrap();
|
||||
let rustfmt_exe = rustfmt_executable(&sh);
|
||||
let rustfmt_toml = project_root().join("rustfmt.toml");
|
||||
let mut stdout =
|
||||
cmd!(sh, "{rustfmt_exe} --config-path {rustfmt_toml} --config fn_single_line=true")
|
||||
.stdin(text)
|
||||
.read()
|
||||
.unwrap();
|
||||
let version = cmd!(sh, "rustup run stable rustfmt --version").read().unwrap_or_default();
|
||||
|
||||
// First try explicitly requesting the stable channel via rustup in case nightly is being used by default,
|
||||
// then plain rustfmt in case rustup isn't being used to manage the compiler (e.g. when using Nix).
|
||||
let mut stdout = if !version.contains("stable") {
|
||||
let version = cmd!(sh, "rustfmt --version").read().unwrap_or_default();
|
||||
if !version.contains("stable") {
|
||||
panic!(
|
||||
"Failed to run rustfmt from toolchain 'stable'. \
|
||||
Please run `rustup component add rustfmt --toolchain stable` to install it.",
|
||||
);
|
||||
} else {
|
||||
cmd!(sh, "rustfmt --config-path {rustfmt_toml} --config fn_single_line=true")
|
||||
.stdin(text)
|
||||
.read()
|
||||
.unwrap()
|
||||
}
|
||||
} else {
|
||||
cmd!(
|
||||
sh,
|
||||
"rustup run stable rustfmt --config-path {rustfmt_toml} --config fn_single_line=true"
|
||||
)
|
||||
.stdin(text)
|
||||
.read()
|
||||
.unwrap()
|
||||
};
|
||||
if !stdout.ends_with('\n') {
|
||||
stdout.push('\n');
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue