mirror of
https://github.com/spacebarchat/server.git
synced 2026-04-11 01:15:40 +00:00
40 lines
1.9 KiB
JavaScript
40 lines
1.9 KiB
JavaScript
const { execSync } = require("child_process");
|
|
const path = require("path");
|
|
const fs = require("fs");
|
|
const { argv, stdout, exit } = require("process");
|
|
const { execIn, parts, getDirs, walk, sanitizeVarName } = require("../utils");
|
|
|
|
//generate git patch for each file in assets/cache
|
|
const srcDir = path.join(__dirname, "..", "..", "assets", "cache");
|
|
const destDir = path.join(__dirname, "..", "..", "assets", "cache_src");
|
|
const patchDir = path.join(__dirname, "..", "..", "assets", "testclient_patches");
|
|
if(!fs.existsSync(patchDir)) fs.mkdirSync(patchDir);
|
|
const files = fs.readdirSync(srcDir);
|
|
files.forEach((file) => {
|
|
const filePath = path.join(srcDir, file);
|
|
const stats = fs.statSync(filePath);
|
|
if (stats.isFile()) {
|
|
const ext = path.extname(file);
|
|
if (ext === ".js" || ext === ".css") {
|
|
const newFilePath = path.join(destDir, file);
|
|
//check if file has been modified
|
|
let patch;
|
|
try {
|
|
let es = execSync(`diff -du --speed-large-files --horizon-lines=0 ${newFilePath} ${filePath}`, {
|
|
maxBuffer: 1024 * 1024 * 10,
|
|
}).toString();
|
|
patch="";
|
|
} catch (e) {
|
|
patch = e.stdout.toString().replaceAll(path.join(destDir, file), file).replaceAll(path.join(srcDir, file), file);
|
|
}
|
|
if (patch.length > 0) {
|
|
//generate patch;
|
|
fs.writeFileSync(path.join(patchDir, file + ".patch"), patch);
|
|
console.log(`Generated patch for ${file}: ${patch.length} bytes, ${patch.split("\n").length} lines, ${patch.split("\n").filter((x) => x.startsWith("+")).length} additions, ${patch.split("\n").filter((x) => x.startsWith("-")).length} deletions`);
|
|
}
|
|
else {
|
|
//console.log(`No changes for ${file}`);
|
|
}
|
|
}
|
|
}
|
|
}); |