Expand description

Library to calculate next semantic version based on conventional commits.

It does not analyze git history, the list of commits must be provided by the user.

Version changes

If conventional commits are not used, the patch is incremented.

use semver::Version;
use next_version::NextVersion;

let commits = vec!["my change"];
assert_eq!(Version::new(1, 2, 3).next(commits), Version::new(1, 2, 4));

If a feature comment, is present and the major number is not 1, than the minor is incremented

use semver::Version;
use next_version::NextVersion;

let commits = vec!["my change", "feat: make coffe"];
assert_eq!(Version::new(1, 2, 4).next(&commits), Version::new(1, 3, 0));

assert_eq!(Version::new(0, 2, 4).next(&commits), Version::new(0, 2, 5));

Breaking changes will increment:

  • major if major is not 0.
  • minor if major is 0.
use semver::Version;
use next_version::NextVersion;

let commits = vec!["feat!: break user"];
assert_eq!(Version::new(1, 2, 4).next(&commits), Version::new(2, 0, 0));

assert_eq!(Version::new(0, 4, 4).next(&commits), Version::new(0, 5, 0));

Enums

Traits