1 unstable release
0.1.0 | Jun 26, 2024 |
---|
#1541 in Parser implementations
218 downloads per month
71KB
1.5K
SLoC
Keep a Changelog File
A serializer and deserializer for changelog files written in Keep a Changelog format.
Install
cargo add keep_a_changelog_file
Usage
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}");
}
Dependencies
~5.5–7.5MB
~137K SLoC