Crates.io | keep_a_changelog_file |
lib.rs | keep_a_changelog_file |
version | 0.1.0 |
source | src |
created_at | 2024-06-26 14:21:59.908682 |
updated_at | 2024-06-26 14:21:59.908682 |
description | Read and write changelog files using the Keep a Changelog format |
homepage | |
repository | https://github.com/heroku/keep_a_changelog |
max_upload_size | |
id | 1284562 |
size | 97,723 |
A serializer and deserializer for changelog files written in Keep a Changelog format.
cargo add keep_a_changelog_file
use keep_a_changelog_file::{Changelog, ChangeGroup, PromoteOptions, ReleaseLink, ReleaseVersion};
fn example_usage() {
// parse a changelog
let mut changelog: Changelog = "\
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]"
.parse()
.unwrap();
// modify the unreleased section
changelog
.unreleased
.add(ChangeGroup::Fixed, "Fixed bug in feature X");
changelog.unreleased.add(
ChangeGroup::Deprecated,
"Feature Y will be removed from the next major release",
);
// promote the unreleased changes to a new release
let release_version = "0.0.1".parse::<ReleaseVersion>().unwrap();
let release_link = "https://github.com/my-org/my-project/releases/v0.0.1"
.parse::<ReleaseLink>()
.unwrap();
changelog
.promote_unreleased(&PromoteOptions::new(release_version).with_link(release_link))
.unwrap();
// output the changelog
println!("{changelog}");
}