style(游戏共创): 按 rustfmt 格式化 AGC tauri 侧取件与发布改动(纯格式,无语义变化)

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 状态。
This commit is contained in:
2026-10-05 10:27:17 +08:00
parent f40050afb1
commit d173e7975e
3 changed files with 28 additions and 14 deletions
@@ -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",
@@ -183,9 +183,13 @@ mod tests {
fn release_package_bytes() -> Vec<u8> {
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"<html></html>").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, "失败的项目目录必须被清理");
}
@@ -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};
/// 从平台作品开始创作:取平台已授权公开作品的发行成品包,建成「合规脚手架 + 参考副本」项目。
///