function fromBuildIDtoChangeset()

in buildid_changeset.js [63:118]


function fromBuildIDtoChangeset(buildID, channel = "nightly") {
  let buildObj = parseBuildID(buildID);

  let dirEnd;
  if (channel === "nightly") {
    dirEnd = "central";
  }

  let directory =
    "https://ftp.mozilla.org/pub/firefox/nightly/" +
    buildObj.year +
    "/" +
    toTwoDigits(buildObj.month) +
    "/" +
    buildObj.year +
    "-" +
    toTwoDigits(buildObj.month) +
    "-" +
    toTwoDigits(buildObj.day) +
    "-" +
    toTwoDigits(buildObj.hour) +
    "-" +
    toTwoDigits(buildObj.minute) +
    "-" +
    toTwoDigits(buildObj.second) +
    "-mozilla-" +
    dirEnd +
    "/";

  return fetch(directory)
    .then((response) => response.text())
    .then((data) => {
      let file = data.match(/firefox-\d+.0a[12].en-US.win32.txt/);
      if (!file) {
        file = data.match(/firefox-\d+.0a[12].en-US.linux-x86_64.txt/);
      }
      if (file && file.length == 1) {
        return file[0];
      } else {
        throw new Error(
          "Couldn't find *.win32.txt or *.linux-x86_64.txt file."
        );
      }
    })
    .then((file) => fetch(directory + file))
    .then((response) => response.text())
    .then((data) => {
      let lines = data.split("\n");
      lines = lines.map((line) => line.replace("\r", ""));
      let buildIDfromFile = lines[0];
      if (buildID != buildIDfromFile) {
        throw new Error("Unexpected error: wrong build ID in directory.");
      }
      return lines[1];
    });
}