stab-crashes/versions_util.py

88 строки
2.1 KiB
Python
Исходник Постоянная ссылка Обычный вид История

2021-01-26 14:24:21 +03:00
# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
import requests
__versions = None
def __get_major(v):
2021-01-26 14:24:21 +03:00
return int(v.split(".")[0])
def __getVersions():
"""Get the versions number for each channel
Returns:
dict: versions for each channel
"""
2021-01-26 14:24:21 +03:00
r = requests.get("https://product-details.mozilla.org/1.0/firefox_versions.json")
data = r.json()
2021-01-26 14:24:21 +03:00
nightly = data["FIREFOX_NIGHTLY"]
esr = data["FIREFOX_ESR_NEXT"]
if not esr:
2021-01-26 14:24:21 +03:00
esr = data["FIREFOX_ESR"]
if esr.endswith("esr"):
esr = esr[:-3]
2021-01-26 14:24:21 +03:00
return {
"release": data["LATEST_FIREFOX_VERSION"],
"beta": data["LATEST_FIREFOX_RELEASED_DEVEL_VERSION"],
"nightly": nightly,
"esr": esr,
}
def get(base=False):
"""Get current version number by channel
Returns:
dict: containing version by channel
"""
global __versions
if not __versions:
__versions = __getVersions()
if base:
res = {}
for k, v in __versions.items():
res[k] = __get_major(v)
return res
return __versions
def getStabilityReleases(base):
2021-01-26 14:24:21 +03:00
r = requests.get(
"https://product-details.mozilla.org/1.0/firefox_history_stability_releases.json"
)
data = r.json()
2021-01-26 14:24:21 +03:00
return [v for v in data.keys() if v.startswith(base + ".")]
def getDevelopmentReleases(base):
2021-01-26 14:24:21 +03:00
r = requests.get(
"https://product-details.mozilla.org/1.0/firefox_history_development_releases.json"
)
data = r.json()
2021-01-26 14:24:21 +03:00
return [v for v in data.keys() if v.startswith(base + ".")]
2021-01-26 14:24:21 +03:00
def get_channel_versions(channel, product="Firefox"):
channel = channel.lower()
version = str(get(base=True)[channel])
2021-01-26 14:24:21 +03:00
if channel == "nightly":
return ["{}.0a1".format(version)]
elif channel == "release":
return ["{}.0".format(version)] + getStabilityReleases(version)
elif channel == "beta":
return getDevelopmentReleases(version)
else:
2021-01-26 14:24:21 +03:00
assert False, "Unknown channel {}".format(channel)