搭个基本的架子先
Signed-off-by: Jia Chao <jiac13@chinaunicom.cn>
This commit is contained in:
parent
81e3c048ff
commit
172eb6ab07
|
@ -4,3 +4,7 @@ version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[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" }
|
||||||
|
|
107
src/lib.rs
107
src/lib.rs
|
@ -1,14 +1,103 @@
|
||||||
pub fn add(left: usize, right: usize) -> usize {
|
use cvrf_xmlparser::{Severity, XmlReader};
|
||||||
left + right
|
use serde::{Serialize, Deserialize};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct UpdateInfoDb {
|
||||||
|
db: Vec<UpdateInfo>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
mod tests {
|
pub struct UpdateInfo {
|
||||||
use super::*;
|
// sa id
|
||||||
|
id: String,
|
||||||
|
|
||||||
#[test]
|
// sa title
|
||||||
fn it_works() {
|
title: String,
|
||||||
let result = add(2, 2);
|
|
||||||
assert_eq!(result, 4);
|
// 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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user