From d173e7975e6545938a4f25ef30c69f4a3292339e Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Mon, 5 Oct 2026 10:27:17 +0800 Subject: [PATCH] =?UTF-8?q?style(=E6=B8=B8=E6=88=8F=E5=85=B1=E5=88=9B):=20?= =?UTF-8?q?=E6=8C=89=20rustfmt=20=E6=A0=BC=E5=BC=8F=E5=8C=96=20AGC=20tauri?= =?UTF-8?q?=20=E4=BE=A7=E5=8F=96=E4=BB=B6=E4=B8=8E=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=94=B9=E5=8A=A8=EF=BC=88=E7=BA=AF=E6=A0=BC=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E6=97=A0=E8=AF=AD=E4=B9=89=E5=8F=98=E5=8C=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI run 3386 的 `Repository checks` 失败于 `cargo fmt --all -- --check`(AGC tauri workspace),本分支引入;本次只跑 `cargo fmt --all --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml`,漂移文件与 CI 报告完全一致,共 3 个: - game_distribution_publish.rs:404 分支的 `StatusCode::NOT_FOUND =>` 改成块、`game_id` 字符集判据的 `.chars().all(...)` 换行、`if let Some(...) = crate::project::read_project_fork_source(...)` 换行、下载路径测试里的 `fork_source_download_segments(...)` 调用换行。 - game_fork.rs:测试里两处 `writer.start_file(...).expect(...)` 与一处 `assert!(...)` 折行、`filter(|entry| ...)` 闭包折行。 - game_fork/desktop.rs:`use crate::game_distribution_publish::{...}` 收成单行。 逐文件核对过 `git diff`:只有折行 / 缩进 / 大括号位置 / 尾随逗号类变化,标识符、字符串 字面量、注释文本、逻辑一律未动。未改 server-rs、src、scripts,也未动 PR 状态。 --- .../src/game_distribution_publish.rs | 19 ++++++++++++------- .../src-tauri/src/game_fork.rs | 19 +++++++++++++++---- .../src-tauri/src/game_fork/desktop.rs | 4 +--- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/game_distribution_publish.rs b/apps/ai-game-creator-shell/src-tauri/src/game_distribution_publish.rs index 14c7d9b47..08531a088 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/game_distribution_publish.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/game_distribution_publish.rs @@ -528,7 +528,9 @@ fn map_fork_source_http_error(status: StatusCode, body: &str) -> String { StatusCode::FORBIDDEN => { "permission-denied: 作者没有开放这个作品的共创授权,无法改编".to_string() } - StatusCode::NOT_FOUND => "fork-source-not-found: 该作品不存在或已被删除,无法改编".to_string(), + StatusCode::NOT_FOUND => { + "fork-source-not-found: 该作品不存在或已被删除,无法改编".to_string() + } StatusCode::CONFLICT => { "fork-source-not-available: 该作品当前不能作为改编来源(未公开、已下架或没有公开版本)" .to_string() @@ -679,9 +681,9 @@ pub(crate) async fn fetch_platform_game_fork_source( let game_id = game_id.trim(); // 路径安全判据与发行入口一致:只接受 ASCII 字母数字与 `-`/`_`,不接受分隔符与盘符。 if game_id.is_empty() - || !game_id - .chars() - .all(|character| character.is_ascii_alphanumeric() || character == '-' || character == '_') + || !game_id.chars().all(|character| { + character.is_ascii_alphanumeric() || character == '-' || character == '_' + }) { return Err("改编来源作品标识无效".to_string()); } @@ -1497,7 +1499,8 @@ pub(crate) async fn publish_local_project_game( // (带 gameId)重复带声明会变成不可恢复的 409。判据就是目标 gameId 是否属于更新发布。 let mut metadata = metadata; if target_game_id.is_none() { - if let Some(source) = crate::project::read_project_fork_source(Path::new(project_path.trim())) + if let Some(source) = + crate::project::read_project_fork_source(Path::new(project_path.trim())) { metadata.fork = Some(GameDistributionForkDeclaration { parent_game_id: source.game_id, @@ -1921,8 +1924,10 @@ mod tests { #[test] fn fork_source_download_path_accepts_only_same_origin_relative_paths() { assert_eq!( - fork_source_download_segments("/api/game-distribution/games/game_1/fork-source/package") - .expect("relative path"), + fork_source_download_segments( + "/api/game-distribution/games/game_1/fork-source/package" + ) + .expect("relative path"), vec![ "api", "game-distribution", diff --git a/apps/ai-game-creator-shell/src-tauri/src/game_fork.rs b/apps/ai-game-creator-shell/src-tauri/src/game_fork.rs index 7744b1935..f50a21077 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/game_fork.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/game_fork.rs @@ -183,9 +183,13 @@ mod tests { fn release_package_bytes() -> Vec { let mut writer = zip::ZipWriter::new(std::io::Cursor::new(Vec::new())); let options = SimpleFileOptions::default(); - writer.start_file("index.html", options).expect("start entry"); + writer + .start_file("index.html", options) + .expect("start entry"); std::io::Write::write_all(&mut writer, b"").expect("write entry"); - writer.start_file("game/main.js", options).expect("start script"); + writer + .start_file("game/main.js", options) + .expect("start script"); std::io::Write::write_all(&mut writer, b"console.log('playable')").expect("write script"); writer.finish().expect("finish zip").into_inner() } @@ -196,7 +200,9 @@ mod tests { let digest = sha256_hex(&bytes); assert!(verify_fork_source_bytes(&bytes, &digest, bytes.len() as u64).is_ok()); // 摘要大小写不敏感(服务端回小写,客户端仍按同一口径比较)。 - assert!(verify_fork_source_bytes(&bytes, &digest.to_uppercase(), bytes.len() as u64).is_ok()); + assert!( + verify_fork_source_bytes(&bytes, &digest.to_uppercase(), bytes.len() as u64).is_ok() + ); let size_error = verify_fork_source_bytes(&bytes, &digest, bytes.len() as u64 + 1) .expect_err("大小不符必须失败"); @@ -280,7 +286,12 @@ mod tests { let leftovers = fs::read_dir(&projects_root) .expect("read projects root") .filter_map(Result::ok) - .filter(|entry| entry.file_name().to_string_lossy().starts_with("gameagent-")) + .filter(|entry| { + entry + .file_name() + .to_string_lossy() + .starts_with("gameagent-") + }) .count(); assert_eq!(leftovers, 0, "失败的项目目录必须被清理"); } diff --git a/apps/ai-game-creator-shell/src-tauri/src/game_fork/desktop.rs b/apps/ai-game-creator-shell/src-tauri/src/game_fork/desktop.rs index 570b2927a..561ccfeec 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/game_fork/desktop.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/game_fork/desktop.rs @@ -1,8 +1,6 @@ // 桌面 Fork 取件接入;摘要校验、参考副本落点与来源记录规则保留在父模块供现有测试验证。 use super::*; -use crate::game_distribution_publish::{ - fetch_platform_game_fork_source, require_platform_session, -}; +use crate::game_distribution_publish::{fetch_platform_game_fork_source, require_platform_session}; /// 从平台作品开始创作:取平台已授权公开作品的发行成品包,建成「合规脚手架 + 参考副本」项目。 ///