extern crate hpkg;
use std::{env, process};
use hpkg::repository::Repository;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() != 2 {
println!("usage: dump_hpkr <repository.hpkr>");
process::exit(1);
}
let repo = match Repository::load(&args[1]) {
Ok(o) => o,
Err(e) => {
println!("ERROR: {:?}", e);
process::exit(1);
}
};
println!("Repository Info");
println!(" name: {:?}", repo.info.name);
println!(" vendor: {:?}", repo.info.vendor);
println!(" summary: {:?}", repo.info.summary);
println!(" identifier: {:?}", repo.info.identifier);
println!(" base URL: {:?}", repo.info.base_url);
println!(" priority: {:?}", repo.info.priority);
println!(" arch: {:?}", repo.info.architecture);
println!(" licenses: {} names, {} texts",
repo.info.license_names.len(),
repo.info.license_texts.len());
println!("\nHeader");
if let Some(ref h) = repo.header {
println!(" version: {}.{}", h.version, h.minor_version);
println!(" total size: {}", h.total_size);
println!(" compression: {}", h.heap_compression);
println!(" heap: {} compressed -> {} uncompressed",
h.heap_size_compressed, h.heap_size_uncompressed);
}
println!("\nPackages ({})", repo.packages.len());
if repo.packages.is_empty() {
println!(" (none)");
} else {
for (i, pkg) in repo.packages.iter().enumerate() {
let arch = pkg.architecture.as_deref().unwrap_or("-");
let checksum = pkg.checksum.as_deref().unwrap_or("-");
println!(" {:<4} {:<30} {:12} {}",
if i < 999 { format!("{}.", i + 1) } else { String::new() },
pkg.name.as_deref().unwrap_or("(unnamed)"),
arch,
if checksum.len() > 16 {
format!("{}..", &checksum[..16])
} else {
checksum.to_string()
}
);
if i >= 99 {
println!(" ... and {} more", repo.packages.len() - 100);
break;
}
}
}
}