13次发布
0.1.12 | 2024年7月30日 |
---|---|
0.1.11 | 2024年3月9日 |
0.1.10 | 2023年10月5日 |
0.1.6 | 2023年9月27日 |
#229 在 解析器实现
7,304 每月下载量
用于 8 个crate(6个直接使用)
110KB
3K SLoC
Debian Changelog解析器
此crate提供了一个解析器,用于解析Debian/changelog文件,如Debian策略中所述,第4.4节。
解析器构建一个CST。它是无损的,即保留格式,并允许编辑和部分解析。
示例
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(())
}
或更新现有的变更日志文件
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(),
"[email protected]".to_string(),
),
None,
None,
);
std::fs::write("debian/changelog", changelog.to_string())?;
Ok(())
}
依赖关系
~5–7MB
~111K SLoC