Files
cc-3-8-x-mcp/cli/src/cli/fix-borders-cmd.js
T

60 lines
2.1 KiB
JavaScript
Raw Normal View History

// ============================================================
// cli/fix-borders-cmd.js — fix-borders 子命令
//
// 用法:
// cocos-mcp-cli fix-borders [--project <dir>] [--dry-run]
//
// 修复 Cocos 重启把图片九宫格 bordersubMetas.*.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 };