ruffle/web/packages/extension/tools/utils.js

62 lines
1.4 KiB
JavaScript

const fs = require("fs");
const path = require("path");
const archiver = require("archiver");
const webpack = require("webpack");
const webpack_config = require("../webpack.config");
function build() {
return new Promise((resolve, reject) => {
const compiler = webpack(webpack_config());
compiler.run((err) => {
if (err) {
return reject(err);
}
resolve();
});
});
}
function createManifest(overrides) {
const manifest = require("../manifest.json");
return { ...manifest, ...overrides };
}
async function zip(destination, manifest) {
const output = fs.createWriteStream(destination);
const archive = archiver("zip", {});
output.on("close", function () {
console.log(
`Extension is ${archive.pointer()} total bytes when packaged`
);
});
archive.on("error", function (err) {
throw err;
});
archive.on("warning", function (err) {
if (err.code === "ENOENT") {
console.warn(`Warning whilst zipping extension: ${err}`);
} else {
throw err;
}
});
archive.pipe(output);
archive.directory(path.resolve(__dirname, `../build`), "");
archive.append(Buffer.from(JSON.stringify(manifest)), {
name: "manifest.json",
});
await archive.finalize();
}
module.exports = {
build,
zip,
createManifest,
};