diff options
Diffstat (limited to 'www-client/brave-bin/autogen.py')
| -rw-r--r-- | www-client/brave-bin/autogen.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/www-client/brave-bin/autogen.py b/www-client/brave-bin/autogen.py new file mode 100644 index 0000000..c9ada62 --- /dev/null +++ b/www-client/brave-bin/autogen.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 + +import json +from datetime import timedelta +from packaging import version + + +def find_release(json_dict, channel="Release"): + releases = filter( + lambda x: x["prerelease"] is False + and x["draft"] is False + and x["name"].startswith(channel) + and not "Android" in x["name"], + json_dict, + ) + releases = list(releases) + if not len(releases): + return None + return sorted(releases, key=lambda x: version.parse(x["tag_name"]))[-1] + + +async def generate(hub, **pkginfo): + + json_dict = await hub.pkgtools.fetch.get_page( + "https://api.github.com/repos/brave/brave-browser/releases?per_page=100", is_json=True, refresh_interval=timedelta(days=5) + ) + + # Try to use the latest release version, but fall back to latest nightly if none found: + release = None + dl_asset = None + for channel in ["Release", "Beta", "Dev", "Nightly"]: + r = find_release(json_dict, channel=channel) + if r: + dl_assets = list( + filter( + lambda x: x["browser_download_url"].endswith("-linux-amd64.zip") + or x["browser_download_url"].endswith("-linux-x64.zip"), + r["assets"], + ) + ) + if len(dl_assets): + release = r + dl_asset = dl_assets[0] + break + + if release is None or dl_asset is None: + raise hub.pkgtools.ebuild.BreezyError("Can't find a suitable release of Brave.") + + version = release["tag_name"][1:] # strip leading 'v' + + url = dl_asset["browser_download_url"] + + ebuild = hub.pkgtools.ebuild.BreezyBuild( + **pkginfo, version=version, artifacts=[hub.pkgtools.ebuild.Artifact(url=url)] + ) + ebuild.push() + + +# vim: ts=4 sw=4 noet |
