Skip to content

Commit 6eae7f1

Browse files
committed
fix: don't panic if there is a version requirement without version (#262)
1 parent 6a17416 commit 6eae7f1

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

cargo-smart-release/src/command/release/manifest.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,8 @@ fn set_version_and_update_package_dependency(
543543
let version_req = VersionReq::parse(current_version_req.as_str().expect("versions are strings"))?;
544544
let force_update = conservative_pre_release_version_handling
545545
&& version::is_pre_release(new_version) // setting the lower bound unnecessarily can be harmful
546-
&& !version::rhs_is_breaking_bump_for_lhs(&req_as_version(&version_req), new_version); // don't claim to be conservative if this is necessary anyway
546+
// don't claim to be conservative if this is necessary anyway
547+
&& req_as_version(&version_req).map(|req_version|!version::rhs_is_breaking_bump_for_lhs(&req_version, new_version)).unwrap_or(false);
547548
if !version_req.matches(new_version) || force_update {
548549
if !version_req_unset_or_default(&version_req) {
549550
bail!(
@@ -577,13 +578,12 @@ fn set_version_and_update_package_dependency(
577578
Ok(manifest != new_manifest)
578579
}
579580

580-
fn req_as_version(req: &VersionReq) -> Version {
581-
let comp = &req.comparators.get(0).expect("at least one version comparator");
582-
Version {
581+
fn req_as_version(req: &VersionReq) -> Option<Version> {
582+
req.comparators.get(0).map(|comp| Version {
583583
major: comp.major,
584584
minor: comp.minor.unwrap_or(0),
585585
patch: comp.patch.unwrap_or(0),
586586
pre: comp.pre.clone(),
587587
build: Default::default(),
588-
}
588+
})
589589
}

0 commit comments

Comments
 (0)