Crates.io | debian-changelog |
lib.rs | debian-changelog |
version | |
source | src |
created_at | 2023-09-26 13:54:11.860775 |
updated_at | 2024-10-26 10:59:26.414717 |
description | Parser for Debian changelog files |
homepage | |
repository | https://github.com/jelmer/debian-changelog-rs |
max_upload_size | |
id | 983660 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
This crate provides a parser for debian/changelog files, as described in the Debian policy, section 4.4.
The parser builds a CST. It is lossless - i.e. preserves formatting, and allows editing and partial parsing.
Example:
use std::io::Read;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let file = std::fs::File::open("/usr/share/doc/rustc/changelog.Debian.gz")?;
let mut gz = flate2::read::GzDecoder::new(file);
let mut contents = String::new();
gz.read_to_string(&mut contents)?;
let changelog: debian_changelog::ChangeLog = contents.parse()?;
for entry in changelog.entries() {
println!(
"{}: {}",
entry.package().unwrap(),
entry.version().unwrap().to_string()
);
}
Ok(())
}
Or to update an existing changelog file:
use std::io::Read;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let file = std::fs::File::open("debian/changelog")?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
let changelog: debian_changelog::ChangeLog = contents.parse()?;
changelog.auto_add_change(
&["* Make a change"],
(
"Jelmer Vernooij".to_string(),
"jelmer@debian.org".to_string(),
),
None,
None,
);
std::fs::write("debian/changelog", changelog.to_string())?;
Ok(())
}