const fs = require('fs') const path = require('path') const execSync = require('child_process').execSync function exec(command, options) { try { const { stdout, stderr } = execSync(command, options) if (stderr) { throw new Error(stderr) } console.log(stdout) } catch (e) { console.log('Exec Error:', e) } } const root = __dirname function loop() { console.log(new Date(), 'auto commit start') const dirs = fs.readdirSync(root) for (let dir of dirs) { const cwd = path.join(root, dir) if (fs.existsSync(path.join(cwd, '.git/config'))) { console.log('auto commit', cwd) exec(`git add -A`, { cwd }) exec(`git commit -am "[WIP] auto commit"`, { cwd }) exec(`git push`, { cwd }) console.log('done') } } } // loop() const timeout = process.env.AUTO_COMMIT || 86400 if (timeout > 600) { setInterval(loop, 1000 * timeout) }