diff --git a/src/analyzer/mod.rs b/src/analyzer/mod.rs index 0aa1f98..007824c 100644 --- a/src/analyzer/mod.rs +++ b/src/analyzer/mod.rs @@ -406,6 +406,7 @@ fn _reporter() -> crate::Result { } // 对比两个 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 => 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 +}