-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate_zip.js
59 lines (48 loc) · 1.54 KB
/
create_zip.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
const JSZip = require("jszip");
const fs = require("fs");
const version = process.env['npm_package_version'];
const addonName = "GearOverview";
// Create the folder to put all the zip files in
const zipFolder = "builds";
if (!fs.existsSync(zipFolder)) {
fs.mkdirSync(zipFolder);
}
// Generate a unique zip filename
let buildCounter = 0;
let zipFilename = `${addonName}-${version}.zip`;
while (fs.existsSync(`${zipFolder}/${zipFilename}`)) {
buildCounter += 1;
zipFilename = `${addonName}-${version}-${buildCounter}.zip`;
}
try {
const zip = new JSZip();
const files = [
"README.md",
"CHANGELOG.md",
"LICENSE",
`${addonName}.txt`,
]
const addonFolder = zip.folder(addonName);
for (const filename of files) {
console.log("Adding", filename);
addonFolder.file(filename, fs.readFileSync(filename));
}
// Add all the files mentioned in the addon base file
const addonFileContents = fs.readFileSync(`${addonName}.txt`)
for (const line of String(addonFileContents).split("\n")) {
const filename = line.trim();
try {
addonFolder.file(filename, fs.readFileSync(filename));
console.log("Adding", filename);
} catch (e) {
}
}
zip
.generateNodeStream({type: "nodebuffer", streamFiles: true})
.pipe(fs.createWriteStream(`${zipFolder}/${zipFilename}`))
.on("finish", () => {
console.log(`${zipFolder}/${zipFilename} written`);
});
} catch (err) {
console.error(err)
}