const fs = require('fs');
const path = require('path');
/**
* Boots up scripts from entries defined in a configuration file.
* @param {string} configFilePath Path to the configuration file (JSON).
* @param {object} options Optional configuration options.
*/
async function bootstrapScripts(configFilePath, options = {}) {
try {
// Read the configuration file
const configFile = JSON.parse(fs.readFileSync(configFilePath, 'utf-8'));
// Validate configuration (basic check)
if (!configFile.entries || !Array.isArray(configFile.entries)) {
throw new Error('Invalid configuration: Missing or invalid "entries" array.');
}
// Process each entry
for (const entry of configFile.entries) {
if (!entry.script || typeof entry.script !== 'string') {
console.warn(`Skipping entry due to missing or invalid script: ${JSON.stringify(entry)}`);
continue;
}
const scriptPath = path.resolve(entry.script); // Resolve to absolute path
try {
// Execute the script
console.log(`Bootstrapping script: ${scriptPath}`);
await require(scriptPath)(); // Execute the script
console.log(`Script ${scriptPath} completed successfully.`);
} catch (error) {
console.error(`Error executing script ${scriptPath}:`, error);
}
}
} catch (error) {
console.error('Error loading or processing configuration:', error);
}
}
module.exports = bootstrapScripts;
Add your comment