use semver::Version;
use crate::VersionIncrement;
pub trait NextVersion {
fn next<I>(&self, commits: I) -> Self
where
I: IntoIterator,
I::Item: AsRef<str>;
fn increment_major(&self) -> Self;
fn increment_minor(&self) -> Self;
fn increment_patch(&self) -> Self;
}
impl NextVersion for Version {
fn next<I>(&self, commits: I) -> Self
where
I: IntoIterator,
I::Item: AsRef<str>,
{
let increment = VersionIncrement::from_commits(self, commits);
match increment {
Some(increment) => increment.bump(self),
None => self.clone(),
}
}
fn increment_major(&self) -> Self {
Self {
major: self.major + 1,
minor: 0,
patch: 0,
pre: semver::Prerelease::EMPTY,
build: semver::BuildMetadata::EMPTY,
}
}
fn increment_minor(&self) -> Self {
Self {
major: self.major,
minor: self.minor + 1,
patch: 0,
pre: semver::Prerelease::EMPTY,
build: semver::BuildMetadata::EMPTY,
}
}
fn increment_patch(&self) -> Self {
Self {
major: self.major,
minor: self.minor,
patch: self.patch + 1,
pre: semver::Prerelease::EMPTY,
build: semver::BuildMetadata::EMPTY,
}
}
}