#![cfg_attr(feature = "deny-warnings", deny(warnings))]
+// warn on lints, that are included in `rust-lang/rust`s bootstrap
+#![warn(rust_2018_idioms, unused_lifetimes)]
use rustc_tools_util::VersionInfo;
use std::env;
+use std::ffi::OsString;
use std::path::PathBuf;
use std::process::{self, Command};
-use std::ffi::OsString;
const CARGO_CLIPPY_HELP: &str = r#"Checks a package to catch common mistakes and improve your Rust code.
struct ClippyCmd {
unstable_options: bool,
- cmd: &'static str,
+ cargo_subcommand: &'static str,
args: Vec<String>,
- clippy_args: String
+ clippy_args: String,
}
-impl ClippyCmd
-{
+impl ClippyCmd {
fn new<I>(mut old_args: I) -> Self
where
I: Iterator<Item = String>,
{
- let mut cmd = "check";
+ let mut cargo_subcommand = "check";
let mut unstable_options = false;
let mut args = vec![];
for arg in old_args.by_ref() {
match arg.as_str() {
"--fix" => {
- cmd = "fix";
+ cargo_subcommand = "fix";
continue;
- }
+ },
"--" => break,
// Cover -Zunstable-options and -Z unstable-options
s if s.ends_with("unstable-options") => unstable_options = true,
- _ => {}
+ _ => {},
}
args.push(arg);
}
- if cmd == "fix" && !unstable_options {
+ if cargo_subcommand == "fix" && !unstable_options {
panic!("Usage of `--fix` requires `-Z unstable-options`");
}
args.insert(0, "+nightly".to_string());
}
- let clippy_args: String =
- old_args
- .map(|arg| format!("{}__CLIPPY_HACKERY__", arg))
- .collect();
+ let clippy_args: String = old_args.map(|arg| format!("{}__CLIPPY_HACKERY__", arg)).collect();
ClippyCmd {
unstable_options,
- cmd,
+ cargo_subcommand,
args,
clippy_args,
}
}
}
- fn path(&self) -> PathBuf {
+ fn path() -> PathBuf {
let mut path = env::current_exe()
.expect("current executable path invalid")
.with_file_name("clippy-driver");
.map(|p| ("CARGO_TARGET_DIR", p))
}
- fn to_std_cmd(self) -> Command {
+ fn into_std_cmd(self) -> Command {
let mut cmd = Command::new("cargo");
- cmd.env(self.path_env(), self.path())
+ cmd.env(self.path_env(), Self::path())
.envs(ClippyCmd::target_dir())
.env("CLIPPY_ARGS", self.clippy_args)
- .arg(self.cmd)
+ .arg(self.cargo_subcommand)
.args(&self.args);
cmd
}
}
-
fn process<I>(old_args: I) -> Result<(), i32>
where
I: Iterator<Item = String>,
{
let cmd = ClippyCmd::new(old_args);
- let mut cmd = cmd.to_std_cmd();
+ let mut cmd = cmd.into_std_cmd();
let exit_status = cmd
.spawn()
#[cfg(test)]
mod tests {
- use super::*;
+ use super::ClippyCmd;
#[test]
#[should_panic]
#[test]
fn fix_unstable() {
- let args = "cargo clippy --fix -Zunstable-options".split_whitespace().map(ToString::to_string);
+ let args = "cargo clippy --fix -Zunstable-options"
+ .split_whitespace()
+ .map(ToString::to_string);
let cmd = ClippyCmd::new(args);
- assert_eq!("fix", cmd.cmd);
+ assert_eq!("fix", cmd.cargo_subcommand);
assert_eq!("RUSTC_WORKSPACE_WRAPPER", cmd.path_env());
- assert!(cmd.args.iter().find(|arg| arg.ends_with("unstable-options")).is_some());
+ assert!(cmd.args.iter().any(|arg| arg.ends_with("unstable-options")));
}
#[test]
fn check() {
let args = "cargo clippy".split_whitespace().map(ToString::to_string);
let cmd = ClippyCmd::new(args);
- assert_eq!("check", cmd.cmd);
+ assert_eq!("check", cmd.cargo_subcommand);
assert_eq!("RUSTC_WRAPPER", cmd.path_env());
}
#[test]
fn check_unstable() {
- let args = "cargo clippy -Zunstable-options".split_whitespace().map(ToString::to_string);
+ let args = "cargo clippy -Zunstable-options"
+ .split_whitespace()
+ .map(ToString::to_string);
let cmd = ClippyCmd::new(args);
- assert_eq!("check", cmd.cmd);
+ assert_eq!("check", cmd.cargo_subcommand);
assert_eq!("RUSTC_WORKSPACE_WRAPPER", cmd.path_env());
}
}