}
}
-pub fn metadata() -> Result<Metadata, Error> {
- let output = Command::new("cargo").args(&["metadata", "--no-deps"]).output()?;
+pub fn metadata(manifest_path: Option<String>) -> Result<Metadata, Error> {
+ 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)?;
Ok(json::decode(stdout)?)
}
};
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);
for target in metadata.packages.remove(0).targets {
let args = std::env::args().skip(2);