-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.js
67 lines (56 loc) · 1.97 KB
/
build.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import archiver from "archiver";
import fs from "fs-extra";
import path from "path";
const extName = "auto-hide-next-up-card";
const distDir = "dist";
const chromeExtDir = path.join(distDir, "chrome");
const firefoxExtDir = path.join(distDir, "firefox");
const pkgMetadata = JSON.parse(fs.readFileSync("package.json", "utf-8"));
const pkgVersion = pkgMetadata.version;
const baseArchiveName = `${extName}_${pkgVersion}`;
const prepareSrc = (parentDir) => {
if (!fs.existsSync(parentDir)) {
fs.mkdirSync(parentDir, { recursive: true });
}
const targetDir = path.join(parentDir, "ext");
if (fs.existsSync(targetDir)) {
fs.rmSync(targetDir, { recursive: true });
}
fs.copySync("src/", targetDir);
fs.copySync("LICENSE", path.join(targetDir, "LICENSE"));
return targetDir;
};
const buildChromeExt = async () => {
const targetDir = prepareSrc(chromeExtDir);
const archiveName = `${baseArchiveName}_chrome.zip`;
const archivePath = path.join(chromeExtDir, archiveName);
const output = fs.createWriteStream(archivePath);
const archive = archiver("zip", {
zlib: { level: 9 },
});
archive.directory(targetDir, false);
archive.pipe(output);
await archive.finalize();
console.log(`created ${archivePath}`);
};
const buildFirefoxExt = async () => {
const targetDir = prepareSrc(firefoxExtDir);
const archiveName = `${baseArchiveName}_firefox.zip`;
const archivePath = path.join(firefoxExtDir, archiveName);
const manifestPath = path.join(targetDir, "manifest.json");
fs.rmSync(manifestPath);
fs.copySync("misc/manifest.firefox.json", manifestPath);
const output = fs.createWriteStream(archivePath);
const archive = archiver("zip", {
zlib: { level: 9 },
});
archive.directory(targetDir, false);
archive.pipe(output);
await archive.finalize();
console.log(`created ${archivePath}`);
};
const main = async () => {
await buildChromeExt();
await buildFirefoxExt();
};
main();