Newer
Older
TelosDB / scripts / prepare-resources.cjs
const fs = require('fs');
const path = require('path');

const projectRoot = path.resolve(__dirname, '..');
const backendDir = path.resolve(projectRoot, 'src/backend');
const buildAssetsDir = path.resolve(backendDir, 'build_assets');

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);
    }
}

// Clean and recreate build_assets
console.log('Cleaning build_assets directory...');
if (fs.existsSync(buildAssetsDir)) {
    fs.rmSync(buildAssetsDir, { recursive: true, force: true });
}
fs.mkdirSync(buildAssetsDir, { recursive: true });

// 1. Copy DLLs from bin/ to build_assets/ (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(buildAssetsDir, file);
            console.log(`[DLL] Copying ${file} to build_assets/`);
            fs.copyFileSync(src, dest);
        }
    });
}

// 2. Copy critical JSON files to build_assets/
['mcp.json', 'config.json'].forEach(file => {
    const src = path.join(projectRoot, file);
    if (fs.existsSync(src)) {
        const dest = path.join(buildAssetsDir, file);
        console.log(`[JSON] Copying ${file} to build_assets/`);
        fs.copyFileSync(src, dest);
    }
});

// 3. Copy models/ to build_assets/models/
const modelsDir = path.join(projectRoot, 'models');
if (fs.existsSync(modelsDir)) {
    const dest = path.join(buildAssetsDir, 'models');
    console.log(`[Models] Copying folder to build_assets/models/`);
    copyRecursiveSync(modelsDir, dest);
}

// 4. Copy everything from resources/ to build_assets/
const resSrcDir = path.join(projectRoot, 'resources');
if (fs.existsSync(resSrcDir)) {
    fs.readdirSync(resSrcDir).forEach(child => {
        const src = path.join(resSrcDir, child);
        const dest = path.join(buildAssetsDir, child);
        console.log(`[Resource] Copying ${child} to build_assets/`);
        copyRecursiveSync(src, dest);
    });
}

console.log('Resource preparation complete (build_assets isolated).');