91 lines
2.3 KiB
JavaScript
91 lines
2.3 KiB
JavaScript
const { build, zip } = require("./utils");
|
|
const path = require("path");
|
|
const signAddon = require("sign-addon").default;
|
|
const fs = require("fs");
|
|
|
|
async function sign(
|
|
api_key,
|
|
api_secret,
|
|
extension_id,
|
|
unsigned_path,
|
|
manifest,
|
|
destination
|
|
) {
|
|
const tempDir = require("temp-dir");
|
|
let result = await signAddon({
|
|
xpiPath: unsigned_path,
|
|
version: manifest.version,
|
|
apiKey: api_key,
|
|
apiSecret: api_secret,
|
|
id: extension_id,
|
|
downloadDir: tempDir,
|
|
});
|
|
|
|
if (result.success) {
|
|
if (result.downloadedFiles.length === 1) {
|
|
fs.renameSync(result.downloadedFiles[0], destination);
|
|
} else {
|
|
console.warn(
|
|
"Unexpected downloads for signed firefox extension, expected 1."
|
|
);
|
|
console.warn(result);
|
|
}
|
|
}
|
|
}
|
|
|
|
function createManifest(overrides) {
|
|
const manifest = require("../manifest.json");
|
|
return { ...manifest, ...overrides };
|
|
}
|
|
|
|
async function run() {
|
|
console.log("Creating firefox extension...");
|
|
|
|
const dist = path.resolve(__dirname, "../dist");
|
|
if (!fs.existsSync(dist)) {
|
|
fs.mkdirSync(dist);
|
|
}
|
|
|
|
const version = require("../package.json").version;
|
|
let id;
|
|
if (process.env.FIREFOX_EXTENSION_ID) {
|
|
id = process.env.FIREFOX_EXTENSION_ID;
|
|
} else {
|
|
id = "ruffle-player-extension@ruffle.rs";
|
|
}
|
|
const manifest = createManifest({
|
|
version,
|
|
browser_specific_settings: { gecko: { id } },
|
|
});
|
|
|
|
await build();
|
|
await zip(`${dist}/firefox_unsigned.xpi`, manifest);
|
|
|
|
if (
|
|
process.env.MOZILLA_API_KEY &&
|
|
process.env.MOZILLA_API_SECRET &&
|
|
process.env.FIREFOX_EXTENSION_ID
|
|
) {
|
|
await sign(
|
|
process.env.MOZILLA_API_KEY,
|
|
process.env.MOZILLA_API_SECRET,
|
|
process.env.FIREFOX_EXTENSION_ID,
|
|
`${dist}/firefox_unsigned.xpi`,
|
|
manifest,
|
|
`${dist}/firefox.xpi`
|
|
);
|
|
} else {
|
|
console.log(
|
|
"Skipping signing of firefox extension. To enable this, please provide MOZILLA_API_KEY, MOZILLA_API_SECRET and FIREFOX_EXTENSION_ID environment variables"
|
|
);
|
|
}
|
|
|
|
console.log("Firefox extension has been built!");
|
|
}
|
|
|
|
module.exports = run;
|
|
|
|
if (!module.parent) {
|
|
run().catch((error) => console.error(error));
|
|
}
|