mirror of
https://github.com/HappyLifeOk/cc-3-8-x-mcp.git
synced 2026-06-10 09:46:47 +00:00
fc93911d31
Cocos 重启/重新导入有时把已设九宫格的图 meta 里 subMetas.*.userData.border* 重置成 0(九宫格丢失)。新增功能扫 git 改动的 .meta,把「git 有值、工作区被 清 0」的 border 还原成 git 的正确值,只动 border 字段、保留 meta 其它改动。 - cli/src/editor/fix-borders.js: 核心(git 对比 + 精准还原) - cli fix-borders 命令(main.js 注册) - MCP tool meta_fix_reset_border(main.js wrapper + server/tools.js) - 跨平台纯 JS + git,带 dry-run Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
60 lines
2.1 KiB
JavaScript
60 lines
2.1 KiB
JavaScript
// ============================================================
|
||
// cli/fix-borders-cmd.js — fix-borders 子命令
|
||
//
|
||
// 用法:
|
||
// cocos-mcp-cli fix-borders [--project <dir>] [--dry-run]
|
||
//
|
||
// 修复 Cocos 重启把图片九宫格 border(subMetas.*.userData.border*)重置成 0 的 meta:
|
||
// 扫 git 改动的 .meta,把「git 里有值、工作区被清 0」的 border 还原成 git 的值。
|
||
// 只动 border 字段、保留 meta 其它改动。
|
||
// --dry-run 只预览不写;--project 指定项目路径(默认当前目录)。
|
||
// ============================================================
|
||
|
||
'use strict';
|
||
|
||
const { fixResetBorders } = require('../editor/fix-borders.js');
|
||
|
||
function die(msg) { process.stderr.write('Error: ' + msg + '\n'); process.exit(1); }
|
||
|
||
function cmdFixBorders(argv) {
|
||
let project = process.cwd();
|
||
let dryRun = false;
|
||
|
||
for (let i = 0; i < argv.length; i++) {
|
||
const a = argv[i];
|
||
if (a === '--dry-run') {
|
||
dryRun = true;
|
||
} else if (a === '--project' || a === '-p') {
|
||
project = argv[++i];
|
||
} else if (a === '--help' || a === '-h') {
|
||
process.stdout.write(
|
||
'cocos-mcp-cli fix-borders — 修复 Cocos 重启把九宫格 border 重置成 0 的 meta\n\n' +
|
||
' --project, -p <dir> 项目路径(git 仓库或其子目录,默认当前目录)\n' +
|
||
' --dry-run 只预览将还原哪些,不写文件\n\n' +
|
||
'原理:扫 git 改动的 .meta,把「git 有值、工作区被清 0」的 border 还原成 git 的值。\n');
|
||
return;
|
||
} else {
|
||
die('未知参数 "' + a + '"');
|
||
}
|
||
}
|
||
|
||
let r;
|
||
try {
|
||
r = fixResetBorders(project, { dryRun: dryRun });
|
||
} catch (e) {
|
||
die(e.message);
|
||
}
|
||
|
||
process.stdout.write(
|
||
(dryRun ? '[dry-run] ' : '') +
|
||
'扫描 ' + r.scanned + ' 个改动 meta,还原 border:' +
|
||
r.fixedFiles + ' 个 meta / ' + r.fixedFrames + ' 个 sprite-frame\n');
|
||
|
||
if (r.details.length) {
|
||
process.stdout.write(r.details.slice(0, 50).join('\n') + '\n');
|
||
if (r.details.length > 50) process.stdout.write('...(共 ' + r.details.length + ' 处,此处只列前 50)\n');
|
||
}
|
||
}
|
||
|
||
module.exports = { cmdFixBorders };
|