[][src]Crate git_conventional

A parser library for the Conventional Commit specification.

Example

use indoc::indoc;

let message = indoc!("
    docs(example)!: add tested usage example

    This example is tested using Rust's doctest capabilities. Having this
    example helps people understand how to use the parser.

    BREAKING CHANGE: Going from nothing to something, meaning anyone doing
    nothing before suddenly has something to do. That sounds like a change
    in your break.

    Co-Authored-By: Lisa Simpson <lisa@simpsons.fam>
    Closes #12
");

let commit = git_conventional::Commit::parse(message).unwrap();

// You can access all components of the subject.
assert_eq!(commit.type_(), git_conventional::DOCS);
assert_eq!(commit.scope().unwrap(), "example");
assert_eq!(commit.description(), "add tested usage example");

// And the free-form commit body.
assert!(commit.body().unwrap().contains("helps people understand"));

// If a commit is marked with a bang (`!`) OR has a footer with the key
// "BREAKING CHANGE", it is considered a "breaking" commit.
assert!(commit.breaking());

// You can access each footer individually.
assert!(commit.footers()[0].value().contains("That sounds like a change"));

// Footers provide access to their token and value.
assert_eq!(commit.footers()[1].token(), "Co-Authored-By");
assert_eq!(commit.footers()[1].value(), "Lisa Simpson <lisa@simpsons.fam>");

// Two types of separators are supported, regular ": ", and " #":
assert_eq!(commit.footers()[2].separator(), " #");
assert_eq!(commit.footers()[2].value(), "12");

Structs

Commit

A conventional commit.

Error

The error returned when parsing a commit fails.

Footer

A single footer.

FooterToken

A component of the conventional commit.

Scope

A component of the conventional commit.

Type

A component of the conventional commit.

Enums

ErrorKind

All possible error kinds returned when parsing a conventional commit.

FooterSeparator

The type of separator between the footer token and value.

Constants

CHORE

Possible commit type for other things.

DOCS

Possible commit type for changing documentation.

FEAT

Commit type when introducing new features (correlates with minor in semver)

FIX

Commit type when patching a bug (correlates with patch in semver)

PERF

Possible commit type for performance optimizations.

REFACTOR

Possible commit type for refactoring code structure.

REVERT

Possible commit type when reverting changes.

STYLE

Possible commit type for changing code style.

TEST

Possible commit type for addressing tests.