Spaces:
Sleeping
Sleeping
| const { exec } = require('child_process'); | |
| const path = require('path'); | |
| const cron = require('node-cron'); | |
| const WATCH_DIR = path.join(__dirname, '.data'); | |
| function gitStatusHasChanges(callback) { | |
| exec('git status --porcelain', { cwd: WATCH_DIR }, (err, stdout, stderr) => { | |
| if (err) { | |
| console.error('Error running git status:', err); | |
| callback(false); | |
| return; | |
| } | |
| callback(stdout.trim().length > 0); | |
| }); | |
| } | |
| function gitCommitAndPush() { | |
| const now = new Date(); | |
| const timeString = now.toISOString(); | |
| exec('git add .', { cwd: WATCH_DIR }, (err, stdout, stderr) => { | |
| if (err) { | |
| console.error('Error running git add:', err); | |
| return; | |
| } | |
| exec(`git commit -m "Database Sync - ${timeString}"`, { cwd: WATCH_DIR }, (err2, stdout2, stderr2) => { | |
| if (err2) { | |
| if (stderr2.includes('nothing to commit')) { | |
| console.log('No changes to commit.'); | |
| } else { | |
| console.error('Error running git commit:', err2); | |
| } | |
| return; | |
| } | |
| exec('git push', { cwd: WATCH_DIR }, (err3, stdout3, stderr3) => { | |
| if (err3) { | |
| console.error('Error running git push:', err3); | |
| return; | |
| } | |
| console.log('Changes pushed successfully at', timeString); | |
| }); | |
| }); | |
| }); | |
| } | |
| function checkForChanges() { | |
| gitStatusHasChanges((hasChanges) => { | |
| if (hasChanges) { | |
| console.log('Changes detected, committing and pushing...'); | |
| gitCommitAndPush(); | |
| } else { | |
| console.log('No changes detected.'); | |
| } | |
| }); | |
| } | |
| function startWatching() { | |
| console.log(`Starting to watch directory: ${WATCH_DIR}`); | |
| // Schedule to run every minute | |
| cron.schedule('* * * * *', () => { | |
| checkForChanges(); | |
| }); | |
| } | |
| startWatching(); | |