add: package2rpminfo

Signed-off-by: Jia Chao <jiachao2130@126.com>
This commit is contained in:
Jia Chao 2024-09-18 10:05:40 +08:00
parent bb88e5f0b8
commit a7f2a4ead0

View File

@ -406,6 +406,7 @@ fn _reporter() -> crate::Result<Reporter> {
}
// 对比两个 rpm Package 的版本,返回最新的一个
// TODO: 使用 RpmInfo 作为对比对象
fn rpmdb_package_vercmp(pa: Package, pb: Package) -> Package {
// 首先进行 epoch 的比较
match (pa.epoch(), pb.epoch()) {
@ -420,3 +421,23 @@ fn rpmdb_package_vercmp(pa: Package, pb: Package) -> Package {
return pb;
}
}
// 将 RPMDB 里的 Package 转换为 RpmInfo方便统一进行版本对比和处理。
fn package2rpminfo(pkg: Package) -> RpmInfo {
let mut rpminfo = RpmInfo::new();
// 目前只需要将 name/epoch/version/release/arch 几项填充即可
rpminfo.set("name", pkg.name().to_string());
// Option<i32> => String
if let Some(epoch) = pkg.epoch() {
rpminfo.set("epoch", epoch.to_string());
}
rpminfo.set("version", pkg.version().to_string());
rpminfo.set("release", pkg.release().to_string());
// Option<&str> => String
if let Some(arch) = pkg.arch() {
rpminfo.set("arch", arch.to_string());
}
rpminfo
}