const { exec } = require('child_process'); const path = require('path'); // Cron job setup for achievements const cronJobs = [ { name: 'daily_achievements', // Run daily at 19:00 for best-time achievements schedule: '0 19 * * *', command: `cd ${__dirname} && node best_time_achievements.js >> /var/log/ninjaserver_achievements.log 2>&1`, description: 'Daily best-time achievement check at 19:00' }, { name: 'weekly_achievements', // Run every Sunday at 19:00 for weekly best-time achievements schedule: '0 19 * * 0', command: `cd ${__dirname} && node best_time_achievements.js >> /var/log/ninjaserver_achievements.log 2>&1`, description: 'Weekly best-time achievement check on Sunday at 19:00' }, { name: 'monthly_achievements', // Run on last day of month at 19:00 for monthly best-time achievements schedule: '0 19 28-31 * * [ $(date -d tomorrow +\\%d) -eq 1 ]', command: `cd ${__dirname} && node best_time_achievements.js >> /var/log/ninjaserver_achievements.log 2>&1`, description: 'Monthly best-time achievement check on last day of month at 19:00' } ]; function setupCronJobs() { console.log('šŸ• Setting up best-time achievement cron jobs...'); let cronEntries = []; // Create cron job entries cronJobs.forEach(job => { const cronEntry = `${job.schedule} ${job.command}`; cronEntries.push(cronEntry); console.log(`šŸ“… ${job.name}: ${job.schedule} - ${job.description}`); }); // Add all cron jobs to crontab const allCronEntries = cronEntries.join('\n'); exec(`(crontab -l 2>/dev/null; echo "${allCronEntries}") | crontab -`, (error, stdout, stderr) => { if (error) { console.error('āŒ Error setting up cron jobs:', error); return; } if (stderr) { console.error('āš ļø Cron job warning:', stderr); } console.log('āœ… All cron jobs setup successfully!'); console.log('šŸ“ Logs will be written to: /var/log/ninjaserver_achievements.log'); // Show current crontab exec('crontab -l', (error, stdout, stderr) => { if (!error) { console.log('\nšŸ“‹ Current crontab:'); console.log(stdout); } }); }); } function removeCronJobs() { console.log('šŸ—‘ļø Removing best-time achievement cron jobs...'); exec('crontab -l | grep -v "best_time_achievements.js" | crontab -', (error, stdout, stderr) => { if (error) { console.error('āŒ Error removing cron jobs:', error); return; } console.log('āœ… All cron jobs removed successfully!'); }); } // Command line interface if (require.main === module) { const command = process.argv[2]; switch (command) { case 'setup': setupCronJobs(); break; case 'remove': removeCronJobs(); break; case 'status': exec('crontab -l | grep best_time_achievements', (error, stdout, stderr) => { if (stdout) { console.log('āœ… Best-time achievement cron jobs are active:'); console.log(stdout); } else { console.log('āŒ No best-time achievement cron jobs found'); } }); break; default: console.log('Usage: node setup_cron.js [setup|remove|status]'); console.log(' setup - Add best-time achievement cron jobs (daily 19:00, Sunday 19:00, last day of month 19:00)'); console.log(' remove - Remove all best-time achievement cron jobs'); console.log(' status - Check if best-time achievement cron jobs are active'); } } module.exports = { setupCronJobs, removeCronJobs };