Newer
Older
TelosDB / scripts / prepare-resources.cjs
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.');