1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/mediawiki_ynh.git synced 2024-09-03 19:46:05 +02:00

update extension script : be smarter by finding maybe stalled branches

This commit is contained in:
Félix Piédallu 2023-09-04 16:22:45 +02:00
parent 84f9e95a8f
commit ecd86a8a41

View file

@ -6,15 +6,20 @@ Download extensions for the current mediawiki version, and update the conf files
from typing import List, Optional from typing import List, Optional
import hashlib import hashlib
import urllib import urllib
import datetime
from html.parser import HTMLParser from html.parser import HTMLParser
import tomlkit import tomlkit
from packaging import version from packaging import version
import requests import requests
EXTENSIONS_HOST_URL = "https://extdist.wmflabs.org/dist/extensions/"
GITHUB_API_URL = "https://api.github.com/repos" GITHUB_API_URL = "https://api.github.com/repos"
# Update this after updating mediawiki version.
ACCEPTABLE_BRANCHES = [
"REL1_40",
"REL1_39",
]
def sha256sum_of_url(url: str) -> str: def sha256sum_of_url(url: str) -> str:
"""Compute checksum without saving the file""" """Compute checksum without saving the file"""
@ -62,6 +67,16 @@ def get_last_commit_of(repo: str, branch: str) -> str:
return commit["sha"] return commit["sha"]
def timestamp_of_commit(repo: str, sha: str) -> int:
commit = requests.get(f"{GITHUB_API_URL}/{repo}/commits/{sha}", timeout=10).json()
try:
date = commit["commit"]["author"]["date"]
except :
print(date)
raise
return datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%SZ")
def main(): def main():
print('Updating extensions source files...') print('Updating extensions source files...')
with open("manifest.toml", "r", encoding="utf-8") as file: with open("manifest.toml", "r", encoding="utf-8") as file:
@ -75,13 +90,20 @@ def main():
print(f'Updating source file for {name}') print(f'Updating source file for {name}')
repo = get_repo(descr["url"]) repo = get_repo(descr["url"])
branches = get_branches(repo) branches = get_branches(repo)
branch = find_valid_version(branches, mediawiki_version) commits = [
if not branch: get_last_commit_of(repo, branch)
for branch in branches
if branch in ACCEPTABLE_BRANCHES
]
if not commits:
print("Could not find any valid branch") print("Could not find any valid branch")
continue continue
commit = get_last_commit_of(repo, branch) # Sort by commit date…
commits = sorted(commits, key=lambda x, r=repo: timestamp_of_commit(r, x), reverse=True)
commit = commits[0]
url = f"https://github.com/{repo}/archive/{commit}.tar.gz" url = f"https://github.com/{repo}/archive/{commit}.tar.gz"
manifest["resources"]["sources"][name]["url"] = url manifest["resources"]["sources"][name]["url"] = url