const { exec } = require('child_process'); const { promisify } = require('util'); const internals = { // Promisified functions exec: promisify(exec), }; module.exports = { canHandle() { // For the future: actually check if it's a valid git url return true; }, async syncUp(remote, blogDirectory) { await internals.exec(`cd ${blogDirectory} && git init -b main`); await internals.exec(`cd ${blogDirectory} && git add .`); await internals.exec(`cd ${blogDirectory} && git commit --allow-empty -m blog-sync-up-${Date.now()}`); await internals.exec(`cd ${blogDirectory} && git push ${remote} main --force`); }, async syncDown(remote, blogDirectory) { await internals.exec(`cd ${blogDirectory} && git init -b main`); try { await internals.exec(`cd ${blogDirectory} && git checkout .`); } catch {} await internals.exec(`cd ${blogDirectory} && git clean . -f`); await internals.exec(`cd ${blogDirectory} && git pull ${remote} main`); } }