dotfiles/common/hellcooling/0001-web-build-local-extensions-as-well.patch

75 lines
2 KiB
Diff
Raw Normal View History

From 8295005701c85955551b7493922b41085843fbe6 Mon Sep 17 00:00:00 2001
From: Alyxia Sother <alyxia@riseup.net>
Date: Sat, 23 Sep 2023 11:16:37 +0200
Subject: [PATCH] web: build local extensions as well
---
web/buildExtension.js | 44 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/web/buildExtension.js b/web/buildExtension.js
index 206408c..8ed3312 100644
--- a/web/buildExtension.js
+++ b/web/buildExtension.js
@@ -1,7 +1,46 @@
+const fs = require("fs");
+const os = require("os");
+const path = require("path");
const webpack = require("webpack");
process.env.BUILD_TYPE = "extension";
const config = require("./webpack.config.js");
+const platform = os.platform();
+let dataDir;
+switch (platform) {
+ case "linux":
+ dataDir = path.join(os.homedir(), ".config/hh3");
+ break;
+ case "darwin":
+ dataDir = path.join(os.homedir(), "Library/ApplicationSupport/hh3");
+ break;
+}
+if (!dataDir) throw new Error("No dataDir could be inferred! Aborting!");
+
+const PATH_TO_EXTS = path.join(dataDir, "ext");
+const HH_EXT_DIR = path.join(__dirname, "../ext");
+let exts = fs.readdirSync(PATH_TO_EXTS);
+exts = exts.filter((e) => e !== ".git");
+
+function deleteF(path) {
+ const isDir = fs.lstatSync(path).isDirectory();
+ if (isDir) fs.rmSync(path, {recursive: true});
+ else fs.unlinkSync(path);
+}
+
+for (const ext of exts) {
+ if (fs.existsSync(path.join(HH_EXT_DIR, ext)))
+ deleteF(path.join(HH_EXT_DIR, ext));
+
+ const source = path.join(PATH_TO_EXTS, ext);
+ const dest = path.join(HH_EXT_DIR, ext);
+
+ fs.cpSync(source, dest, {
+ recursive: true,
+ });
+ console.log(`${source} -> ${dest}`);
+}
+
webpack.webpack(config, (err, stats) => {
if (!stats?.compilation) {
console.log(err);
@@ -21,5 +60,10 @@ webpack.webpack(config, (err, stats) => {
})
);
}
+ for (let ext of exts) {
+ ext = path.join(HH_EXT_DIR, ext);
+ deleteF(ext);
+ console.log(`✕ ${ext}`);
+ }
}
});
--
2.42.0