3 releases
new 0.1.2 | Dec 15, 2024 |
---|---|
0.1.1 | Dec 14, 2024 |
0.1.0 | Dec 14, 2024 |
#1129 in Command line utilities
67 downloads per month
13KB
170 lines
套件管理工具庫
此工具庫提供管理套件資訊、以 JSON 格式存取數據,以及與套件儲存庫互動的功能。
功能
- PackageInfo:定義套件的元數據並追蹤其依賴。
- JsonStorage:處理 JSON 資料的序列化/反序列化,用於數據持久化。
- RepoInfo:管理並查詢儲存庫中的套件元數據。
結構體與方法
Dependency
代表一個套件的依賴。
欄位:
name
:依賴的名稱。version
:依賴的版本。
PackageInfo
儲存套件的詳細資訊。
欄位:
package_name
:套件名稱。file_name
:套件檔案名稱。version
:套件版本。description
:套件描述。hash
:套件檔案的雜湊值。dependencies
:可選的依賴列表。
方法:
new
:建立一個新的PackageInfo
實例。
JsonStorage<T>
處理 JSON 資料的序列化/反序列化。
方法:
from_json(path: &Path)
:從 JSON 檔案載入資料。to_json(data: &T, path: &Path)
:將資料存儲為 JSON 檔案。from_url(url: &str)
:從 URL 獲取並反序列化 JSON 資料(異步)。from_str_to(file_contents: &str)
:從字串反序列化 JSON 資料。
RepoInfo
管理一個套件的儲存庫。
欄位:
packages
:一個HashMap
,將套件名稱映射到PackageBasicInfo
。
方法:
new()
:建立一個新的RepoInfo
實例。has_package(package_name: &str)
:檢查儲存庫中是否存在指定套件。add_package
:向儲存庫中新增一個套件。add_package_with_info
:使用PackageBasicInfo
實例新增一個套件。get_package
:根據名稱檢索套件資訊。remove_package
:根據名稱移除套件。update_package
:更新已存在的套件資訊。
PackageBasicInfo
簡化版的套件元數據。
欄位:
url
:套件檔案的 URL。file_name
:套件檔案名稱。version
:套件版本。hash
:套件檔案的雜湊值。dependencies
:可選的依賴列表。
使用範例
基本的 PackageInfo 使用
use crate::{Dependency, PackageInfo};
let package = PackageInfo::new(
"example_package".to_string(),
"example_file".to_string(),
"1.0.0".to_string(),
"An example package.".to_string(),
"abc123".to_string(),
None,
);
println!("{:?}", package);
使用 JsonStorage
use crate::JsonStorage;
use std::path::Path;
let path = Path::new("data.json");
let data = JsonStorage::from_json::<Vec<String>>(path).unwrap();
println!("{:?}", data);
管理儲存庫
use crate::{RepoInfo, Dependency};
let mut repo = RepoInfo::new();
repo.add_package(
"example_package".to_string(),
"https://example.com/package".to_string(),
"example_file".to_string(),
"1.0.0".to_string(),
"abc123".to_string(),
None,
);
if repo.has_package("example_package") {
println!("Package found.");
}
相依套件
此工具庫使用以下 Crate:
serde
:用於序列化和反序列化。serde_json
:用於 JSON 操作。anyhow
:用於錯誤處理。reqwest
:用於 HTTP 請求。
貢獻
歡迎貢獻!隨時提交 Issue 或 Pull Request。
授權
此專案採用 Apache-2.0 授權條款。詳情請參閱 LICENSE 檔案。
Dependencies
~6–17MB
~229K SLoC