From 005d1be76dfcc220dc8a517496c3833d04251a92 Mon Sep 17 00:00:00 2001 From: Jan-Erik Rediger Date: Fri, 22 Jan 2016 14:01:18 -0700 Subject: [PATCH 1/2] refactor: Ignore malformed tags --- src/lib.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index fd2391d..f4ca72a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,9 +31,11 @@ pub fn latest_tag(path: &str) -> Option { for tag in tags.iter() { let tag = tag.unwrap(); let tag = &tag[1..]; - let v = Version::parse(tag).expect(&format!("Malformed tag {}", tag)); - if v > biggest_tag { - biggest_tag = v; + + if let Ok(v) = Version::parse(tag) { + if v > biggest_tag { + biggest_tag = v; + } } } From f72ccea1942645bc7c7f0b4cd776a2bb964a0d87 Mon Sep 17 00:00:00 2001 From: Jan-Erik Rediger Date: Fri, 22 Jan 2016 14:19:22 -0700 Subject: [PATCH 2/2] refactor: Reduce code by relying on iterators --- src/lib.rs | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index f4ca72a..d1b483d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,27 +19,16 @@ pub fn latest_tag(path: &str) -> Option { Ok(repo) => repo, Err(_) => return None }; - let mut biggest_tag = Version::parse("0.0.0").unwrap(); let tags = match repo.tag_names(None) { Ok(tags) => tags, Err(_) => return None }; - if tags.len() == 0 { - return None - } - for tag in tags.iter() { - let tag = tag.unwrap(); - let tag = &tag[1..]; - - if let Ok(v) = Version::parse(tag) { - if v > biggest_tag { - biggest_tag = v; - } - } - } - Some(biggest_tag) + tags.iter() + .map(|tag| tag.unwrap()) + .filter_map(|tag| Version::parse(&tag[1..]).ok()) + .max() } pub fn version_bump_since_latest(path: &str) -> CommitType {