blob: d20e2ad0b83eef50dfccbebf55baf4defa53522f [file] [log] [blame]
// Script for generating Spark download links
// No dependencies; pure javascript.
releases = {};
function addRelease(version, releaseDate, packages, mirrored) {
releases[version] = {
released: releaseDate,
packages: packages,
mirrored: mirrored
};
}
var sources = {pretty: "Source Code", tag: "sources"};
var hadoopFree = {pretty: "Pre-built with user-provided Apache Hadoop", tag: "without-hadoop"};
var hadoop3p = {pretty: "Pre-built for Apache Hadoop 3.3 and later", tag: "hadoop3"};
var hadoop3pscala213 = {pretty: "Pre-built for Apache Hadoop 3.3 and later (Scala 2.13)", tag: "hadoop3-scala2.13"};
// 3.4.0+
var packagesV14 = [hadoop3p, hadoop3pscala213, hadoopFree, sources];
addRelease("3.5.1", new Date("02/23/2024"), packagesV14, true);
addRelease("3.4.3", new Date("04/18/2024"), packagesV14, true);
function append(el, contents) {
el.innerHTML += contents;
}
function empty(el) {
el.innerHTML = "";
}
function getSelectedValue(selectEl) {
return selectEl.options[selectEl.selectedIndex].value;
}
function versionShort(version) { return version.replace(/-incubating/, ""); }
function initDownloads() {
var versionSelect = document.getElementById("sparkVersionSelect");
for (var version in releases) {
var releaseDate = releases[version].released;
var title = versionShort(version) + " (" + releaseDate.toDateString().slice(4) + ")";
append(versionSelect, "<option value=\"" + version + "\">" + title + "</option>");
}
onVersionSelect();
}
function initReleaseNotes() {
var releaseNotes = document.getElementById("sparkReleaseNotes");
for (var version in releases) {
var releaseDate = releases[version].released;
var verShort = versionShort(version);
var contents = "<li><a href='releases/spark-release-$verUrl.html'>Spark $ver</a> ($date)</li>"
.replace(/\$verUrl/, verShort.replace(/\./g, "-"))
.replace(/\$ver/, verShort)
.replace(/\$date/, releaseDate.toDateString().slice(4));
if (!version.endsWith("preview")) {
append(releaseNotes, contents);
}
}
}
function onPackageSelect() {
updateDownloadLink();
}
function onVersionSelect() {
var versionSelect = document.getElementById("sparkVersionSelect");
var packageSelect = document.getElementById("sparkPackageSelect");
empty(packageSelect);
var version = getSelectedValue(versionSelect);
var packages = releases[version]["packages"];
for (var idx in packages) {
var option = "<option value=$tag> $pretty </option>"
.replace(/\$tag/, packages[idx].tag)
.replace(/\$pretty/, packages[idx].pretty);
append(packageSelect, option);
}
// Populate releases
updateDownloadLink();
}
function updateDownloadLink() {
var versionSelect = document.getElementById("sparkVersionSelect");
var packageSelect = document.getElementById("sparkPackageSelect");
var downloadLink = document.getElementById("spanDownloadLink");
var verifyLink = document.getElementById("sparkDownloadVerify");
empty(downloadLink);
empty(verifyLink);
var version = getSelectedValue(versionSelect);
var pkg = getSelectedValue(packageSelect);
var artifactName = "spark-" + version + "-bin-" + pkg + ".tgz"
artifactName = artifactName.replace(/-bin-sources/, ""); // special case for source packages
var downloadHref = "";
if (releases[version].mirrored) {
downloadHref = "https://www.apache.org/dyn/closer.lua/spark/spark-" + version + "/" + artifactName;
} else {
downloadHref = "https://archive.apache.org/dist/spark/spark-" + version + "/" + artifactName;
}
var text = downloadHref.split("/").reverse()[0];
var onClick =
"trackOutboundLink(this, 'Release Download Links', 'apache_" + artifactName + "'); return false;";
var contents = "<a href=\"" + downloadHref + "\" onClick=\"" + onClick + "\">" + text + "</a>";
append(downloadLink, contents);
var sigHref = "https://downloads.apache.org/spark/spark-" + version + "/" + artifactName + ".asc";
var checksumHref = "https://downloads.apache.org/spark/spark-" + version + "/" + artifactName + ".sha512";
var verifyLinks = versionShort(version) + " <a href=\"" + sigHref + "\">signatures</a>, <a href=\"" +
checksumHref + "\">checksums</a>";
append(verifyLink, verifyLinks);
}