use std::path::Path; use serde::{Deserialize, Serialize}; /// csaf2cusa 自动化执行所需的配置 #[derive(Clone, Debug, Deserialize, Serialize)] pub(crate) struct AutoConfig { // 对应cuavrs-db-csaf source: String, // cuavrs-db-sa target: String, } impl AutoConfig { // 新建一个配置结构 pub fn new(source: String, target: String) -> Self { Self { source, target } } // 从文件中读取配置 pub fn from>(path: P) -> crate::Result { let data = std::fs::read_to_string(path)?; Ok(serde_json::from_str::(&data)?) } // 获取 source 字段 pub fn source(&self) -> &str { &self.source } // 获取 target 字段 pub fn target(&self) -> &str { &self.target } } /// cuvars 中,关于源码追踪,自动修复相关的配置项,一般位于组件最底层的目录,`config.json` #[derive(Clone, Debug, Deserialize, Serialize)] pub(crate) struct RepairConfig { // 对应了 openEuelr 的上游版本, 例 22.03-LST,不可包含 openEuler 字段 upstream: String, // 此组件是否支持自动修复 autobuild: bool, // 当前已修复的最新版本号 fixed_version: String, } #[allow(dead_code)] impl RepairConfig { pub fn new(upstream: String, autobuild: bool, fixed_version: String) -> Self { RepairConfig { upstream, autobuild, fixed_version, } } /// 从指定的路径读取文件并将之转换为 `RepairConfig` pub fn from>(path: P) -> crate::Result { let data = std::fs::read_to_string(path)?; Ok(serde_json::from_str::(&data)?) } /// 获取对应的上游代码分支 pub fn upstream(&self) -> &str { &self.upstream } /// 此组件是否支持自动构建发布 pub fn autobuild(&self) -> bool { self.autobuild } /// 已修复的最新代码版本 pub fn fixed_version(&self) -> &str { &self.fixed_version } }