Skip to main content

calculate_new_version_with_zero_behavior

Function calculate_new_version_with_zero_behavior 

Source
pub fn calculate_new_version_with_zero_behavior(
    current: &Version,
    bump_type: Option<BumpType>,
    prerelease: Option<&PrereleaseSpec>,
    zero_behavior: ZeroVersionBehavior,
    graduate: bool,
) -> Result<Version, VersionError>
Expand description

Calculates a new version with special handling for 0.x versions.

When graduate is true, the version will be promoted to 1.0.0 (with optional prerelease tag). Graduation has specific restrictions:

  • Cannot graduate from a prerelease version (must release stable 0.x first)
  • Cannot graduate a version that is already >= 1.0.0

For 0.x versions without graduation, behavior depends on zero_behavior:

  • EffectiveMinor: major bumps become minor, minor/patch both become patch
  • AutoPromoteOnMajor: major bumps promote to 1.0.0, minor/patch are standard

ยงErrors

Returns VersionError::CannotGraduateFromPrerelease if graduation is requested on a prerelease version.

Returns VersionError::CanOnlyGraduateZeroVersions if graduation is requested on a version >= 1.0.0.

Returns VersionError::InvalidPrerelease if the prerelease identifier produces an invalid semver prerelease string.