aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src/core/game_version.rs
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2026-01-13 16:14:49 +0800
committerHsiangNianian <i@jyunko.cn>2026-01-13 16:14:49 +0800
commit746a94952de6d506dee5f45c77c72ccb597bb516 (patch)
treeab3693dba733736a7670ed901aa4b9bf44d99d7b /src-tauri/src/core/game_version.rs
parentd247a02cd9656b7ca15128e517c8e995af66903a (diff)
downloadDropOut-746a94952de6d506dee5f45c77c72ccb597bb516.tar.gz
DropOut-746a94952de6d506dee5f45c77c72ccb597bb516.zip
Implement library rules validation and zip extraction utility
- Added `is_library_allowed` function to evaluate library permissions based on defined rules. - Introduced `rule_matches` helper function to check OS compatibility for rules. - Created `extract_zip` function to handle zip file extraction, including directory creation and skipping of META-INF entries.
Diffstat (limited to 'src-tauri/src/core/game_version.rs')
-rw-r--r--src-tauri/src/core/game_version.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src-tauri/src/core/game_version.rs b/src-tauri/src/core/game_version.rs
index c33f99c..9eb8d67 100644
--- a/src-tauri/src/core/game_version.rs
+++ b/src-tauri/src/core/game_version.rs
@@ -44,6 +44,21 @@ pub struct AssetIndex {
pub struct Library {
pub downloads: Option<LibraryDownloads>,
pub name: String,
+ pub rules: Option<Vec<Rule>>,
+ pub natives: Option<serde_json::Value>,
+}
+
+#[derive(Debug, Deserialize)]
+pub struct Rule {
+ pub action: String, // "allow" or "disallow"
+ pub os: Option<OsRule>,
+}
+
+#[derive(Debug, Deserialize)]
+pub struct OsRule {
+ pub name: Option<String>, // "linux", "osx", "windows"
+ pub version: Option<String>, // Regex
+ pub arch: Option<String>, // "x86"
}
#[derive(Debug, Deserialize)]