From c5cbbd3835ccd509179504cdf7d5e74356d7dca5 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Fri, 9 Dec 2022 14:43:41 +0100 Subject: Add rudimentary sync support --- lib/remotes/git.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lib/remotes/git.js (limited to 'lib/remotes/git.js') diff --git a/lib/remotes/git.js b/lib/remotes/git.js new file mode 100644 index 0000000..d8e0cfd --- /dev/null +++ b/lib/remotes/git.js @@ -0,0 +1,30 @@ +const { exec } = require('child_process'); +const { debuglog, promisify } = require('util'); + +const internals = { + // Promisified functions + exec: promisify(exec), + + debuglog: debuglog('blog'), +}; + +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`); + 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`); + await internals.exec(`cd ${blogDirectory} && git checkout .`); + await internals.exec(`cd ${blogDirectory} && git clean . -f`); + await internals.exec(`cd ${blogDirectory} && git pull ${remote} main`); + } +} -- cgit