51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
|
|
const { spawn } = require('child_process');
|
||
|
|
const path = require('path');
|
||
|
|
|
||
|
|
// Function to run a command in a specific directory
|
||
|
|
function runCommand(command, args, cwd, name) {
|
||
|
|
return new Promise((resolve, reject) => {
|
||
|
|
const process = spawn(command, args, {
|
||
|
|
cwd,
|
||
|
|
stdio: 'inherit'
|
||
|
|
});
|
||
|
|
|
||
|
|
process.on('close', (code) => {
|
||
|
|
if (code === 0) {
|
||
|
|
resolve();
|
||
|
|
} else {
|
||
|
|
reject(new Error(`${name} process exited with code ${code}`));
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
process.on('error', (err) => {
|
||
|
|
reject(new Error(`${name} process failed: ${err.message}`));
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// Main function to start both servers
|
||
|
|
async function startServers() {
|
||
|
|
console.log('Starting Astro Redi development servers...\n');
|
||
|
|
|
||
|
|
try {
|
||
|
|
// Start both servers concurrently
|
||
|
|
await Promise.all([
|
||
|
|
runCommand('bun', ['run', 'dev'], path.join(__dirname, '../frontend'), 'Frontend'),
|
||
|
|
runCommand('pocketbase', ['serve', '--http=127.0.0.1:8090'], path.join(__dirname, '../backend'), 'Backend')
|
||
|
|
]);
|
||
|
|
|
||
|
|
console.log('\nBoth servers started successfully!');
|
||
|
|
} catch (error) {
|
||
|
|
console.error('Error starting servers:', error.message);
|
||
|
|
process.exit(1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Handle graceful shutdown
|
||
|
|
process.on('SIGINT', () => {
|
||
|
|
console.log('\nShutting down servers...');
|
||
|
|
process.exit(0);
|
||
|
|
});
|
||
|
|
|
||
|
|
// Start the servers
|
||
|
|
startServers();
|