Struct gitjournal::GitJournal [] [src]

pub struct GitJournal {
    pub config: Config,
    // some fields omitted
}

The main structure of git-journal.

Fields

The configuration structure

Methods

impl GitJournal
[src]

Constructs a new GitJournal. Searches upwards if the given path does not contain the .git directory.

Examples

use gitjournal::GitJournal;

let journal = GitJournal::new(".").unwrap();

Errors

When not providing a path with a valid git repository ('.git' folder or the initial parsing of the git tags failed.

Does the setup on the target git repository.

Examples

use gitjournal::GitJournal;

let journal = GitJournal::new(".").unwrap();
journal.setup().expect("Setup error");

Creates a .gitjournal file with the default values inside the given path, which looks like:

# Specifies the available categories for the commit message, allowed regular expressions.
categories = ["Added", "Changed", "Fixed", "Improved", "Removed"]

# Set the characters where the categories are wrapped in
category_delimiters = ["[", "]"]

# Set to false if the output should not be colored
colored_output = true

# Specifies the default template. Will be used for tag validation and printing. Can be
# removed from the configuration file as well.
default_template = "CHANGELOG.toml"

# Show or hide the debug messages like `[OKAY] ...` or `[INFO] ...`
enable_debug = true

# Excluded tags in an array, e.g. "internal"
excluded_commit_tags = []

# Enable or disable the output and accumulation of commit footers.
enable_footers = false

# Show or hide the commit hash for every entry
show_commit_hash = false

# Show or hide the commit message prefix, e.g. JIRA-1234
show_prefix = false

# Sort the commits during the output by "date" (default) or "name"
sort_by = "date"

# Commit message template prefix which will be added during commit preparation.
template_prefix = "JIRA-1234"

It also creates a symlinks for the commit message validation and preparation hook inside the given git repository.

Errors

  • When the writing of the default configuration fails.
  • When installation of the commit message (preparation) hook fails.

Prepare a commit message before the user edits it. This includes also a verification of the commit message, e.g. for amended commits.

Examples

use gitjournal::GitJournal;

let journal = GitJournal::new(".").unwrap();
journal.prepare("./tests/commit_messages/success_1", None)
       .expect("Commit message preparation error");

Errors

When the path is not available or writing the commit message fails.

Verify a given commit message against the parsing rules of RFC0001

Examples

use gitjournal::GitJournal;

let journal = GitJournal::new(".").unwrap();
journal.verify("tests/commit_messages/success_1").expect("Commit message verification error");

Errors

When the commit message is not valid due to RFC0001 or opening of the given file failed.

Parses a revision range for a GitJournal.

Examples

use gitjournal::GitJournal;

let mut journal = GitJournal::new(".").unwrap();
journal.parse_log("HEAD", "rc", &1, &false, &false);

Errors

When something during the parsing fails, for example if the revision range is invalid.

Generates an output template from the current parsing results.

Examples

use gitjournal::GitJournal;

let mut journal = GitJournal::new(".").unwrap();
journal.parse_log("HEAD", "rc", &1, &false, &false);
journal.generate_template().expect("Template generation failed.");

Errors

If the generation of the template was impossible.

Prints the resulting log in a short or detailed variant. Will use the template as an output formatter if provided.

Examples

use gitjournal::GitJournal;

let mut journal = GitJournal::new(".").unwrap();
journal.parse_log("HEAD", "rc", &1, &false, &false);
journal.print_log(true, None, None).expect("Could not print short log.");
journal.print_log(false, None, None).expect("Could not print detailed log.");

Errors

If some commit message could not be print.