CatPortal / build.js
NikaMimi's picture
Upload 17 files
06163ac verified
/**
* Simple build script for CatOS
* Concatenates all modules into a single file for production
*/
const fs = require('fs');
const path = require('path');
const MODULES_DIR = './modules';
const OUTPUT_FILE = './script.js';
// Module load order (important for dependencies)
const moduleOrder = [
'CatOS-Core.js',
'WindowManager.js',
'AppManager.js',
'EventHandler.js',
'Terminal.js',
'main.js'
];
function buildCatOS() {
console.log('πŸ±β€πŸ’» Building CatOS...');
let combinedScript = '';
// Add header
combinedScript += `/**
* CatOS v9.0 (Whiskers Edition) - Combined Build
* Generated: ${new Date().toISOString()}
*/\n\n`;
// Concatenate modules in order
for (const moduleName of moduleOrder) {
const modulePath = path.join(MODULES_DIR, moduleName);
if (fs.existsSync(modulePath)) {
console.log(`πŸ“ Adding module: ${moduleName}`);
const moduleContent = fs.readFileSync(modulePath, 'utf8');
combinedScript += `// === ${moduleName} ===\n`;
combinedScript += moduleContent;
combinedScript += '\n\n';
} else {
console.warn(`⚠️ Module not found: ${moduleName}`);
}
}
// Write combined file
fs.writeFileSync(OUTPUT_FILE, combinedScript);
console.log('βœ… Build complete!');
console.log(`πŸ“¦ Output: ${OUTPUT_FILE}`);
console.log(`πŸ“ Size: ${(fs.statSync(OUTPUT_FILE).size / 1024).toFixed(2)} KB`);
}
// Run if called directly
if (require.main === module) {
buildCatOS();
}
module.exports = { buildCatOS };