Files
opportunities-extension/scripts/build.mjs

91 lines
2.6 KiB
JavaScript

import { mkdir, readFile } from "node:fs/promises";
import path from "node:path";
import { fileURLToPath } from "node:url";
import composition from "./compose.cjs";
import output from "./write-output.cjs";
const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
const distDir = path.join(rootDir, "dist");
const contentScript = composition.composeScript("content");
const backgroundScript = composition.composeScript("background");
const checkOnly = process.argv.includes("--check");
const baseManifest = {
manifest_version: 3,
name: "Opportunities Extension",
description: "Adiciona um atalho de Opportunities Extension nas paginas Oracle Fusion permitidas.",
version: "1.0.2",
permissions: [
"cookies",
"storage"
],
host_permissions: [
"https://eeho.fa.us2.oraclecloud.com/*",
"https://spa.oracle.com/*",
"https://comcipapic-oalprod.integration.ocp.oraclecloud.com/*"
],
content_scripts: [
{
matches: [
"https://eeho.fa.us2.oraclecloud.com/hcmUI/faces/FuseWelcome*",
"https://eeho.fa.us2.oraclecloud.com/fscmUI/faces/FuseWelcome*"
],
js: ["content.js"],
all_frames: true,
run_at: "document_idle"
}
]
};
const targets = [
{
name: "chromium",
manifest: {
...baseManifest,
background: {
service_worker: "background.js"
}
}
},
{
name: "firefox",
manifest: {
...baseManifest,
background: {
scripts: ["background.js"]
},
browser_specific_settings: {
gecko: {
id: "opportunities-extension@local.dev"
}
}
}
}
];
for (const target of targets) {
const manifestJson = `${JSON.stringify(target.manifest, null, 2)}\n`;
JSON.parse(manifestJson);
if (checkOnly) {
const expected = { "manifest.json": manifestJson, "content.js": contentScript, "background.js": backgroundScript };
for (const [file, contents] of Object.entries(expected)) {
const actual = await readFile(path.join(distDir, target.name, file), "utf8");
if (actual !== contents) throw new Error(`Stale output: dist/${target.name}/${file}. Run npm run build.`);
}
continue;
}
const outputDir = path.join(distDir, target.name);
await mkdir(outputDir, { recursive: true });
await output.writeOutput(path.join(outputDir, "content.js"), contentScript);
await output.writeOutput(path.join(outputDir, "background.js"), backgroundScript);
await output.writeOutput(path.join(outputDir, "manifest.json"), manifestJson);
}
if (!checkOnly) {
console.log("Build gerado em dist/chromium e dist/firefox.");
} else {
console.log("Build check ok.");
}