pacman-log 0.1.0

A Rust library for parsing and querying pacman logs
Documentation
use pacman_log::{Action, LogReader};

fn main() {
    println!("=== Last 5 upgrades ===");
    let entries: Vec<_> = LogReader::system()
        .reverse()
        .filter_action(Action::Upgraded)
        .into_iter()
        .take(5)
        .filter_map(|e| e.ok())
        .collect();

    for e in &entries {
        println!(
            "{} {} ({} -> {})",
            e.timestamp.format("%Y-%m-%d"),
            e.package,
            e.old_version.as_deref().unwrap_or("?"),
            e.new_version.as_deref().unwrap_or("?")
        );
    }

    println!("\n=== Last 3 installs ===");
    let installs: Vec<_> = LogReader::system()
        .reverse()
        .filter_action(Action::Installed)
        .into_iter()
        .take(3)
        .filter_map(|e| e.ok())
        .collect();

    for e in &installs {
        println!(
            "{} {} ({})",
            e.timestamp.format("%Y-%m-%d"),
            e.package,
            e.new_version.as_deref().unwrap_or("?")
        );
    }

    println!("\n=== Total entry count ===");
    let total = LogReader::system()
        .into_iter()
        .filter_map(|e| e.ok())
        .count();
    println!("{} entries", total);
}