Skip to content

Commit 78686c8

Browse files
authored
Merge pull request #1029 from oli-obk/manifest2
fix cargo clippy when using with `--manifest-path`
2 parents 5b1d849 + 44c30ca commit 78686c8

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

clippy_lints/src/utils/cargo.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,13 @@ impl From<json::DecoderError> for Error {
6565
}
6666
}
6767

68-
pub fn metadata() -> Result<Metadata, Error> {
69-
let output = Command::new("cargo").args(&["metadata", "--no-deps"]).output()?;
68+
pub fn metadata(manifest_path: Option<String>) -> Result<Metadata, Error> {
69+
let mut cmd = Command::new("cargo");
70+
cmd.arg("metadata").arg("--no-deps");
71+
if let Some(ref mani) = manifest_path {
72+
cmd.arg(mani);
73+
}
74+
let output = cmd.output()?;
7075
let stdout = from_utf8(&output.stdout)?;
7176
Ok(json::decode(stdout)?)
7277
}

src/main.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ pub fn main() {
129129
};
130130

131131
if let Some("clippy") = std::env::args().nth(1).as_ref().map(AsRef::as_ref) {
132-
let mut metadata = cargo::metadata().expect("could not obtain cargo metadata");
132+
let manifest_path = std::env::args().skip(2).find(|val| val.starts_with("--manifest-path="));
133+
let mut metadata = cargo::metadata(manifest_path).expect("could not obtain cargo metadata");
133134
assert_eq!(metadata.version, 1);
134135
for target in metadata.packages.remove(0).targets {
135136
let args = std::env::args().skip(2);

tests/versioncheck.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ use clippy_lints::utils::cargo;
33

44
#[test]
55
fn check_that_clippy_lints_has_the_same_version_as_clippy() {
6-
let clippy_meta = cargo::metadata().expect("could not obtain cargo metadata");
6+
let clippy_meta = cargo::metadata(None).expect("could not obtain cargo metadata");
77
std::env::set_current_dir(std::env::current_dir().unwrap().join("clippy_lints")).unwrap();
8-
let clippy_lints_meta = cargo::metadata().expect("could not obtain cargo metadata");
8+
let clippy_lints_meta = cargo::metadata(None).expect("could not obtain cargo metadata");
99
assert_eq!(clippy_lints_meta.packages[0].version, clippy_meta.packages[0].version);
1010
for package in &clippy_meta.packages[0].dependencies {
1111
if package.name == "clippy_lints" {

0 commit comments

Comments
 (0)