about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJason Newcomb <jsnewcomb@pm.me>2025-05-23 14:32:10 -0400
committerJason Newcomb <jsnewcomb@pm.me>2025-07-11 00:59:19 -0400
commit46ff0a85657fcc08f36fec0a06455536c3296121 (patch)
tree0eaf931b8900bfad38b91ccae78ea490853b6971
parented50c8a0e987511d10ec11936f9e88fb297b18b4 (diff)
downloadrust-46ff0a85657fcc08f36fec0a06455536c3296121.tar.gz
rust-46ff0a85657fcc08f36fec0a06455536c3296121.zip
Add helper function for creating cargo commands.
-rw-r--r--clippy_dev/src/dogfood.rs5
-rw-r--r--clippy_dev/src/lint.rs11
-rw-r--r--clippy_dev/src/serve.rs8
-rw-r--r--clippy_dev/src/setup/toolchain.rs5
-rw-r--r--clippy_dev/src/utils.rs10
5 files changed, 21 insertions, 18 deletions
diff --git a/clippy_dev/src/dogfood.rs b/clippy_dev/src/dogfood.rs
index c1ee3633d3e..d0fca952b93 100644
--- a/clippy_dev/src/dogfood.rs
+++ b/clippy_dev/src/dogfood.rs
@@ -1,6 +1,5 @@
-use crate::utils::run_exit_on_err;
+use crate::utils::{cargo_cmd, run_exit_on_err};
 use itertools::Itertools;
-use std::process::Command;
 
 /// # Panics
 ///
@@ -9,7 +8,7 @@ use std::process::Command;
 pub fn dogfood(fix: bool, allow_dirty: bool, allow_staged: bool, allow_no_vcs: bool) {
     run_exit_on_err(
         "cargo test",
-        Command::new("cargo")
+        cargo_cmd()
             .args(["test", "--test", "dogfood"])
             .args(["--features", "internal"])
             .args(["--", "dogfood_clippy", "--nocapture"])
diff --git a/clippy_dev/src/lint.rs b/clippy_dev/src/lint.rs
index f450bf5d8a2..d8d3e39116b 100644
--- a/clippy_dev/src/lint.rs
+++ b/clippy_dev/src/lint.rs
@@ -1,6 +1,6 @@
-use crate::utils::{cargo_clippy_path, run_exit_on_err};
+use crate::utils::{cargo_clippy_path, cargo_cmd, run_exit_on_err};
+use std::fs;
 use std::process::{self, Command};
-use std::{env, fs};
 
 pub fn run<'a>(path: &str, edition: &str, args: impl Iterator<Item = &'a String>) {
     let is_file = match fs::metadata(path) {
@@ -14,7 +14,7 @@ pub fn run<'a>(path: &str, edition: &str, args: impl Iterator<Item = &'a String>
     if is_file {
         run_exit_on_err(
             "cargo run",
-            Command::new(env::var("CARGO").unwrap_or("cargo".into()))
+            cargo_cmd()
                 .args(["run", "--bin", "clippy-driver", "--"])
                 .args(["-L", "./target/debug"])
                 .args(["-Z", "no-codegen"])
@@ -25,10 +25,7 @@ pub fn run<'a>(path: &str, edition: &str, args: impl Iterator<Item = &'a String>
                 .env("RUSTC_ICE", "0"),
         );
     } else {
-        run_exit_on_err(
-            "cargo build",
-            Command::new(env::var("CARGO").unwrap_or_else(|_| "cargo".into())).arg("build"),
-        );
+        run_exit_on_err("cargo build", cargo_cmd().arg("build"));
         run_exit_on_err(
             "cargo clippy",
             Command::new(cargo_clippy_path())
diff --git a/clippy_dev/src/serve.rs b/clippy_dev/src/serve.rs
index 73d9a1e8237..d9e01813381 100644
--- a/clippy_dev/src/serve.rs
+++ b/clippy_dev/src/serve.rs
@@ -1,10 +1,10 @@
-use crate::utils::{ErrAction, expect_action};
+use crate::utils::{ErrAction, cargo_cmd, expect_action};
 use core::fmt::Display;
 use core::mem;
 use std::path::Path;
 use std::process::Command;
 use std::time::{Duration, SystemTime};
-use std::{env, fs, thread};
+use std::{fs, thread};
 use walkdir::WalkDir;
 
 #[cfg(windows)]
@@ -27,9 +27,7 @@ pub fn run(port: u16, lint: Option<String>) -> ! {
         if is_metadata_outdated(mem::replace(&mut last_update, SystemTime::now())) {
             // Ignore the command result; we'll fall back to displaying the old metadata.
             let _ = expect_action(
-                Command::new(env::var("CARGO").unwrap_or_else(|_| "cargo".into()))
-                    .arg("collect-metadata")
-                    .status(),
+                cargo_cmd().arg("collect-metadata").status(),
                 ErrAction::Run,
                 "cargo collect-metadata",
             );
diff --git a/clippy_dev/src/setup/toolchain.rs b/clippy_dev/src/setup/toolchain.rs
index 4c1db4e8a67..c64ae4ef3c3 100644
--- a/clippy_dev/src/setup/toolchain.rs
+++ b/clippy_dev/src/setup/toolchain.rs
@@ -1,10 +1,9 @@
-use crate::utils::run_exit_on_err;
+use crate::utils::{cargo_cmd, run_exit_on_err};
 use std::env::consts::EXE_SUFFIX;
 use std::env::current_dir;
 use std::ffi::OsStr;
 use std::fs;
 use std::path::{Path, PathBuf};
-use std::process::Command;
 use walkdir::WalkDir;
 
 pub fn create(standalone: bool, force: bool, release: bool, name: &str) {
@@ -46,7 +45,7 @@ pub fn create(standalone: bool, force: bool, release: bool, name: &str) {
 
     run_exit_on_err(
         "cargo build",
-        Command::new("cargo").arg("build").args(release.then_some("--release")),
+        cargo_cmd().arg("build").args(release.then_some("--release")),
     );
 
     install_bin("cargo-clippy", &dest, standalone, release);
diff --git a/clippy_dev/src/utils.rs b/clippy_dev/src/utils.rs
index f518460f582..4b77a49a9f6 100644
--- a/clippy_dev/src/utils.rs
+++ b/clippy_dev/src/utils.rs
@@ -130,6 +130,16 @@ pub fn cargo_clippy_path() -> PathBuf {
     path
 }
 
+/// Creates a `Command` for running cargo.
+#[must_use]
+pub fn cargo_cmd() -> Command {
+    if let Some(path) = env::var_os("CARGO") {
+        Command::new(path)
+    } else {
+        Command::new("cargo")
+    }
+}
+
 #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
 pub struct Version {
     pub major: u16,