aboutsummaryrefslogtreecommitdiff
path: root/lib/remotes
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2022-12-09 14:43:41 +0100
committerRuben Beltran del Rio <ruben@unlimited.pizza>2022-12-09 14:43:41 +0100
commitc5cbbd3835ccd509179504cdf7d5e74356d7dca5 (patch)
treef5588fce8924772a54f599c5636640731bab640d /lib/remotes
parent24de2f063e5dfcad0086d1dc81de3cf012a00e4c (diff)
Add rudimentary sync support
Diffstat (limited to 'lib/remotes')
-rw-r--r--lib/remotes/git.js30
1 files changed, 30 insertions, 0 deletions
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`);
+ }
+}