2022-11-04 16:11:33 +00:00
|
|
|
import fs from "fs/promises";
|
|
|
|
import path from "path";
|
|
|
|
import url from "url";
|
|
|
|
import archiver from "archiver";
|
2021-03-09 19:11:46 +00:00
|
|
|
|
2023-03-25 07:48:40 +00:00
|
|
|
/**
|
|
|
|
* @param {string} source
|
|
|
|
* @param {string} destination
|
|
|
|
*/
|
2021-03-09 19:11:46 +00:00
|
|
|
async function zip(source, destination) {
|
2022-11-04 16:11:33 +00:00
|
|
|
await fs.mkdir(path.dirname(destination), { recursive: true });
|
|
|
|
const output = (await fs.open(destination, "w")).createWriteStream();
|
|
|
|
const archive = archiver("zip");
|
2021-03-09 19:11:46 +00:00
|
|
|
|
|
|
|
output.on("close", () => {
|
|
|
|
console.log(
|
2023-07-20 11:19:39 +00:00
|
|
|
`Extension is ${archive.pointer()} total bytes when packaged.`,
|
2021-03-09 19:11:46 +00:00
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2022-11-04 16:11:33 +00:00
|
|
|
archive.on("error", (error) => {
|
|
|
|
throw error;
|
2021-03-09 19:11:46 +00:00
|
|
|
});
|
|
|
|
|
2022-11-04 16:11:33 +00:00
|
|
|
archive.on("warning", (error) => {
|
|
|
|
if (error.code === "ENOENT") {
|
|
|
|
console.warn(`Warning whilst zipping extension: ${error}`);
|
2021-03-09 19:11:46 +00:00
|
|
|
} else {
|
2022-11-04 16:11:33 +00:00
|
|
|
throw error;
|
2021-03-09 19:11:46 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
archive.pipe(output);
|
|
|
|
|
|
|
|
archive.directory(source, "");
|
|
|
|
|
|
|
|
await archive.finalize();
|
|
|
|
}
|
|
|
|
|
2022-11-04 16:11:33 +00:00
|
|
|
const assets = url.fileURLToPath(new URL("../assets/", import.meta.url));
|
2023-03-25 07:48:40 +00:00
|
|
|
await zip(assets, /** @type {string} */ (process.argv[2]));
|