diff --git a/cargo-crev/CHANGELOG.md b/cargo-crev/CHANGELOG.md index 0d85c976..cd1fcfa6 100644 --- a/cargo-crev/CHANGELOG.md +++ b/cargo-crev/CHANGELOG.md @@ -3,6 +3,9 @@ ## [Unreleased](https://github.com/crev-dev/cargo-crev/compare/v0.26.0...HEAD) - ReleaseDate +- Implement `crev proof find --git-rev 0f0f0f`. +- Make filer for `crev proof find --version 1.1.1` indepent of name filter. + ## [0.26.0](https://github.com/crev-dev/cargo-crev/compare/v0.25.11...v0.26.0) - 2024-11-07 - Fixed handling of the `--diff` flag. diff --git a/cargo-crev/src/main.rs b/cargo-crev/src/main.rs index 4becc403..8995470e 100644 --- a/cargo-crev/src/main.rs +++ b/cargo-crev/src/main.rs @@ -119,10 +119,22 @@ pub fn proof_find(args: opts::ProofFind) -> Result<()> { if let Some(crate_) = args.crate_.as_ref() { iter = Box::new(iter.filter(move |r| &r.package.id.id.name == crate_)); - if let Some(version) = args.version.as_ref() { - iter = Box::new(iter.filter(move |r| &r.package.id.version == version)); - } } + + if let Some(version) = args.version.as_ref() { + iter = Box::new(iter.filter(move |r| &r.package.id.version == version)); + } + + if let Some(git_revision) = args.git_revision.as_ref() { + iter = Box::new(iter.filter(move |r| + r.package.revision_type == proof::default_revision_type() + && ( + git_revision.is_empty() && &r.package.revision == git_revision + || !git_revision.is_empty() && r.package.revision.starts_with(git_revision) + ) + )); + } + for review in iter { println!("---\n{review}"); } diff --git a/cargo-crev/src/opts.rs b/cargo-crev/src/opts.rs index 59ea3230..53532036 100644 --- a/cargo-crev/src/opts.rs +++ b/cargo-crev/src/opts.rs @@ -884,6 +884,9 @@ pub struct ProofFind { #[structopt(name = "vers", long = "vers")] pub version: Option, + #[structopt(name = "git-rev", long = "git-rev")] + pub git_revision: Option, + /// Find a proof by a crev Id #[structopt(name = "author", long = "author")] pub author: Option,