-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
packageExtensions.js
81 lines (64 loc) · 2.06 KB
/
packageExtensions.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const fs = require("fs");
const path = require("path");
const { rimrafSync } = require("rimraf");
const { execSync } = require("child_process");
const zipdir = require("zip-dir");
let outputDir = path.join(__dirname, "dist");
let platforms = ["chrome", "firefox", "edge"];
async function packageExtension() {
// Empty existing dist directory if there is one
if (fs.existsSync(outputDir)) {
try {
rimrafSync(outputDir);
console.log("Removed existing output directory sucessfully");
} catch (error) {
console.error("Error removing existing output directory: ${error}")
}
}
fs.mkdirSync(outputDir);
console.log("dist directory created");
// Build for each platform
for (let platform of platforms) {
console.log(`Building for ${platform.toUpperCase()}...`)
try {
await execSync(`yarn app:${platform}`);
} catch (error) {
console.error(`Error building for ${platform.toUpperCase()}: ${error}`);
}
console.log(`Built for ${platform.toUpperCase()} sucessfully!`);
}
// Zip
for (let platform of platforms) {
console.log(`Attempting to zip: ${platform.toUpperCase()}...`);
let inPath = path.join(__dirname, `/dist/${platform}_dist`);
let outPath = path.join(__dirname, `/dist/${platform}_dist.zip`);
try {
await new Promise((resolve, reject) => {
zipdir(inPath,
{
each: (filePath) =>
console.log(
filePath.replace(/^.*[\\/]/, ""),
`added to ${platform.toUpperCase()} zip`
),
saveTo: outPath,
},
(err) => {
if (err) {
reject(`An error occurred while zipping: ${err}`);
} else {
console.log(`Zipped: ${platform.toUpperCase()}`);
resolve();
}
}
);
});
// Remove unzipped builds
rimrafSync(inPath);
} catch (error) {
console.error(`Error zipping for ${platform.toUpperCase()}: ${error}`);
}
}
console.log("Finished building.")
}
packageExtension();