fix cargo clippy when using with --manifest-path

This commit is contained in:
Oliver Schneider 2016-06-21 12:31:30 +02:00
parent 5b1d849c7e
commit 36c5026c48
No known key found for this signature in database
GPG Key ID: 56D6EEA0FC67AC46
2 changed files with 9 additions and 3 deletions

View File

@ -65,8 +65,13 @@ impl From<json::DecoderError> for Error {
} }
} }
pub fn metadata() -> Result<Metadata, Error> { pub fn metadata(manifest_path: Option<String>) -> Result<Metadata, Error> {
let output = Command::new("cargo").args(&["metadata", "--no-deps"]).output()?; let mut cmd = Command::new("cargo");
cmd.arg("metadata").arg("--no-deps");
if let Some(ref mani) = manifest_path {
cmd.arg(mani);
}
let output = cmd.output()?;
let stdout = from_utf8(&output.stdout)?; let stdout = from_utf8(&output.stdout)?;
Ok(json::decode(stdout)?) Ok(json::decode(stdout)?)
} }

View File

@ -129,7 +129,8 @@ pub fn main() {
}; };
if let Some("clippy") = std::env::args().nth(1).as_ref().map(AsRef::as_ref) { if let Some("clippy") = std::env::args().nth(1).as_ref().map(AsRef::as_ref) {
let mut metadata = cargo::metadata().expect("could not obtain cargo metadata"); let manifest_path = std::env::args().skip(2).find(|val| val.starts_with("--manifest-path="));
let mut metadata = cargo::metadata(manifest_path).expect("could not obtain cargo metadata");
assert_eq!(metadata.version, 1); assert_eq!(metadata.version, 1);
for target in metadata.packages.remove(0).targets { for target in metadata.packages.remove(0).targets {
let args = std::env::args().skip(2); let args = std::env::args().skip(2);