搭个基本的架子先

Signed-off-by: Jia Chao <jiac13@chinaunicom.cn>
This commit is contained in:
Jia Chao 2024-06-13 15:51:44 +08:00
parent 81e3c048ff
commit 172eb6ab07
2 changed files with 102 additions and 9 deletions

View File

@ -4,3 +4,7 @@ version = "0.1.0"
edition = "2021"
[dependencies]
cvrf-xmlparser = { git = "https://git.culinux.net/jiachao2130/cvrf-xmlparser.git", version = "0.1.0" }
serde = { version = "1", features = ["serde_derive"] }
tracing = { version = "0.1" }
xml-rs = { version = "0.8" }

View File

@ -1,14 +1,103 @@
pub fn add(left: usize, right: usize) -> usize {
left + right
use cvrf_xmlparser::{Severity, XmlReader};
use serde::{Serialize, Deserialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateInfoDb {
db: Vec<UpdateInfo>,
}
#[cfg(test)]
mod tests {
use super::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateInfo {
// sa id
id: String,
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
// sa title
title: String,
// sa severity
severity: Severity,
// the product? openEuler/CULinux
release: String,
// 用处不大,先不用
//date: String,
// cve ids可能有多个
cves: Vec<String>,
// 安全公告的描述
description: String,
// 此次更新包含的软件包列表
pkglist: Vec<RpmInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RpmInfo {
// 包名
name: String,
// 可能为空
epoch: String,
version: String,
release: String,
arch: String,
file: String,
}
impl RpmInfo {
pub fn new() -> Self {
RpmInfo {
name: String::new(),
epoch: String::new(),
version: String::new(),
release: String::new(),
arch: String::new(),
file: String::new(),
}
}
pub fn name(&self) -> &str {
&self.name
}
pub fn epoch(&self) -> Option<&str> {
if self.epoch != "" {
Some(&self.epoch)
} else {
None
}
}
pub fn version(&self) -> &str {
&self.version
}
pub fn release(&self) -> &str {
&self.release
}
pub fn arch(&self) -> &str {
&self.arch
}
pub fn file(&self) -> &str {
&self.file
}
pub fn evr(&self) -> String {
if self.epoch().is_some() {
format!("{}:{}-{}", self.epoch, self.version, self.release)
} else {
format!("{}-{}", self.version, self.release)
}
}
pub fn nevra(&self) -> String {
format!("{}-{}-{}", self.name, self.evr(), self.arch)
}
}