const fs = require('fs');
const path = require('path');
const projectRoot = path.resolve(__dirname, '..');
const targetDir = path.resolve(projectRoot, 'src/backend/bundled_resources');
function copyRecursiveSync(src, dest) {
const stats = fs.statSync(src);
if (stats.isDirectory()) {
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest, { recursive: true });
}
fs.readdirSync(src).forEach(childItemName => {
copyRecursiveSync(path.join(src, childItemName), path.join(dest, childItemName));
});
} else {
fs.copyFileSync(src, dest);
}
}
// Ensure target directory exists
if (fs.existsSync(targetDir)) {
fs.rmSync(targetDir, { recursive: true, force: true });
}
fs.mkdirSync(targetDir, { recursive: true });
// 1. Copy DLLs from bin/ to targetDir (flat)
const binDir = path.join(projectRoot, 'bin');
if (fs.existsSync(binDir)) {
fs.readdirSync(binDir).forEach(file => {
if (file.endsWith('.dll')) {
const src = path.join(binDir, file);
const dest = path.join(targetDir, file);
console.log(`Copying ${src} to ${dest}`);
fs.copyFileSync(src, dest);
}
});
}
// 2. Copy everything from resources/ to targetDir (preserving structure)
const resDir = path.join(projectRoot, 'resources');
if (fs.existsSync(resDir)) {
fs.readdirSync(resDir).forEach(child => {
const src = path.join(resDir, child);
const dest = path.join(targetDir, child);
console.log(`Copying ${src} to ${dest}`);
copyRecursiveSync(src, dest);
});
}
console.log('Resource preparation complete.');