-
Notifications
You must be signed in to change notification settings - Fork 1
/
hash-fetcher.js
88 lines (80 loc) · 2.27 KB
/
hash-fetcher.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
82
83
84
85
86
87
88
var fs = require("fs");
var util = require("util");
var fetch = require("node-fetch");
var exec = require("sync-exec");
var cheerio = require("cheerio");
var semver = require("semver");
//http://stackoverflow.com/questions/21935696/protractor-e2e-test-case-for-downloading-pdf-file/26127745
var release = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/";
var latest = "0.0.1";
var slatest = "0.0.1";
var hash_fetcher = fetch(release)
.then(function(response) {
if (!response.ok) {
throw new Error("Release list not get");
}
return response.text();
})
.then(function(body) {
var links = cheerio.load(body)("a");
links.map(function(i, node) {
var ver_frags = node.attribs.href.split("/");
var ver = ver_frags[ver_frags.length - 2];
var sver;
if (/[a-z]/.test(ver)) {
return;
}
if (/^\d+$/.test(ver)) {
sver = ver + ".0.0";
} else if (/^\d+\.\d+$/.test(ver)) {
sver = ver + ".0";
} else {
sver = ver;
}
if (semver.valid(sver) && semver.gt(sver, slatest)) {
latest = ver;
slatest = sver;
}
});
return latest;
})
.then(function(latest) {
return fetch(release + latest + "/SHA512SUMS");
})
.then(function(response) {
if (!response.ok) {
throw new Error("Release list not get");
}
return response.text();
})
.then(function(text) {
var installers = {};
var tuples = text.split("\n");
var i, tuple, file, sum;
for (i in tuples) {
tuple = tuples[i].split(" ");
sum = tuple.shift().trim();
file = tuple.join(" ").trim();
if (file === "linux-i686/zh-TW/firefox-" + latest + ".tar.bz2") {
installers.linux = {
file: "firefox-" + latest + ".tar.bz2",
sha512sum: sum
};
}
if (file === "mac/zh-TW/Firefox " + latest + ".dmg") {
installers.mac = {
file: "Firefox " + latest + ".dmg",
sha512sum: sum
};
}
if (file === "win32/zh-TW/Firefox Setup " + latest + ".exe") {
fs.writeFileSync("hash", sum);
installers.win = {
file: "Firefox Setup " + latest + ".exe",
sha512sum: sum
};
}
}
return installers;
});
exports.hashes = hash_fetcher;