|
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') |
|
} |
|
} |
|
} |
|
|
|
const timeout = process.env.AUTO_COMMIT || 86400 |
|
if (timeout > 600) { |
|
setInterval(loop, 1000 * timeout) |
|
} |