101 lines
3.0 KiB
JavaScript
101 lines
3.0 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 spaPageScript = composition.composeScript("spa-page");
|
|
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.5",
|
|
permissions: [
|
|
"cookies",
|
|
"storage",
|
|
"webRequest",
|
|
"declarativeNetRequestWithHostAccess"
|
|
],
|
|
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"
|
|
},
|
|
{
|
|
matches: ["https://spa.oracle.com/*"],
|
|
js: ["spa-page.js"],
|
|
all_frames: false,
|
|
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, "spa-page.js": spaPageScript };
|
|
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, "spa-page.js"), spaPageScript);
|
|
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.");
|
|
}
|