api-server / make /backup-source.js
XWX-AI's picture
fix(widget): DOCX图表fallback成数据表格根因修复 — widget渲染浏览器池+CDP有限超时+渲染硬超时+队列超时取消+BrowserPool补位bug+body-parser JSON兜底, bump v2.1.11
24a2ddf
Raw
History Blame Contribute Delete
2 kB
const fs = require('fs');
const path = require('path');
const BACKUP_BASE = path.resolve(__dirname, '..', '..');
const SRC_DIR = path.resolve(__dirname, '..');
const EXCLUDE_DIRS = ['node_modules', '.git', '.claude', 'dist'];
function shouldExclude(full, srcDir) {
const relative = path.relative(srcDir, full).replace(/\\/g, '/');
const basename = path.basename(full);
for (const d of EXCLUDE_DIRS) {
if (relative === d || relative.startsWith(d + '/')) return true;
}
return false;
}
function collectFiles(srcDir) {
const files = [];
function walk(dir) {
const entries = fs.readdirSync(dir);
for (const entry of entries) {
const full = path.join(dir, entry);
if (shouldExclude(full, srcDir)) continue;
const stat = fs.statSync(full);
if (stat.isDirectory()) walk(full);
else files.push(full);
}
}
walk(srcDir);
return files;
}
function copyFiles(files, srcDir, destDir) {
for (const full of files) {
const relative = path.relative(srcDir, full);
const dest = path.join(destDir, relative);
fs.mkdirSync(path.dirname(dest), { recursive: true });
fs.copyFileSync(full, dest);
}
}
const pkgPath = path.join(SRC_DIR, 'package.json');
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
const version = pkg.version || 'unknown';
const now = new Date();
const ts = now.toISOString().replace(/[:.]/g, '-').slice(0, 19);
const folderName = 'backend-service_v' + version + '_' + ts;
const backupPath = path.join(BACKUP_BASE, folderName);
console.log('Version: ' + version);
console.log('Creating backup: ' + backupPath);
const files = collectFiles(SRC_DIR);
console.log('Found ' + files.length + ' source files');
copyFiles(files, SRC_DIR, backupPath);
console.log('Backup complete: ' + backupPath);
const serverJs = fs.readFileSync(path.join(backupPath, 'server.js'), 'utf-8');
const hasNewColors = serverJs.includes('#339CFF');
console.log('New ChatGPT colors in backup: ' + (hasNewColors ? 'YES' : 'NO'));