const { exec } = require('child_process'); const path = require('path'); // Cron job setup for daily achievements const cronJob = { // Run daily at 23:59 (end of day) schedule: '59 23 * * *', command: `cd ${__dirname} && node daily_achievements.js >> /var/log/ninjaserver_achievements.log 2>&1`, description: 'Daily achievement check for Ninja Cross Parkour' }; function setupCronJob() { console.log('šŸ• Setting up daily achievement cron job...'); // Create cron job entry const cronEntry = `${cronJob.schedule} ${cronJob.command}`; // Add to crontab exec(`(crontab -l 2>/dev/null; echo "${cronEntry}") | crontab -`, (error, stdout, stderr) => { if (error) { console.error('āŒ Error setting up cron job:', error); return; } if (stderr) { console.error('āš ļø Cron job warning:', stderr); } console.log('āœ… Cron job setup successfully!'); console.log(`šŸ“… Schedule: ${cronJob.schedule}`); console.log(`šŸ”§ Command: ${cronJob.command}`); 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 removeCronJob() { console.log('šŸ—‘ļø Removing daily achievement cron job...'); exec('crontab -l | grep -v "daily_achievements.js" | crontab -', (error, stdout, stderr) => { if (error) { console.error('āŒ Error removing cron job:', error); return; } console.log('āœ… Cron job removed successfully!'); }); } // Command line interface if (require.main === module) { const command = process.argv[2]; switch (command) { case 'setup': setupCronJob(); break; case 'remove': removeCronJob(); break; case 'status': exec('crontab -l | grep daily_achievements', (error, stdout, stderr) => { if (stdout) { console.log('āœ… Cron job is active:'); console.log(stdout); } else { console.log('āŒ No cron job found'); } }); break; default: console.log('Usage: node setup_cron.js [setup|remove|status]'); console.log(' setup - Add daily achievement cron job'); console.log(' remove - Remove daily achievement cron job'); console.log(' status - Check if cron job is active'); } } module.exports = { setupCronJob, removeCronJob };