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解析器实现

Download history 648/week @ 2024-05-01 617/week @ 2024-05-08 492/week @ 2024-05-15 413/week @ 2024-05-22 1001/week @ 2024-05-29 1151/week @ 2024-06-05 1113/week @ 2024-06-12 679/week @ 2024-06-19 1028/week @ 2024-06-26 777/week @ 2024-07-03 851/week @ 2024-07-10 549/week @ 2024-07-17 1596/week @ 2024-07-24 1830/week @ 2024-07-31 2583/week @ 2024-08-07 1263/week @ 2024-08-14

7,304 每月下载量
用于 8 个crate(6个直接使用)

Apache-2.0

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