37 lines
922 B
Python
37 lines
922 B
Python
from io import BytesIO
|
|
import logging
|
|
import re
|
|
import requests as r
|
|
import tarfile
|
|
|
|
|
|
BASE_URL = "https://arch.middleearth.fr"
|
|
DB_NAME = "casio.db"
|
|
|
|
def get_from_regex(regex, package, arch):
|
|
file = BytesIO(r.get(f"{BASE_URL}/{arch}/{DB_NAME}").content)
|
|
db = tarfile.open(fileobj=file)
|
|
|
|
name = list(filter(
|
|
lambda item: item.isdir() and package in item.name,
|
|
db.getmembers()
|
|
))[0].name
|
|
|
|
return regex.search(name).group(1)
|
|
|
|
def get_package_version(package, arch):
|
|
regex = re.compile(".+-(\d+\.\d+(?:\.\d+)?)-\d+")
|
|
|
|
version = get_from_regex(regex, package, arch)
|
|
logging.debug(f"{package}: found {version}")
|
|
|
|
return version
|
|
|
|
def get_package_tarball(package, arch):
|
|
regex = re.compile("(.+)")
|
|
|
|
tarball = get_from_regex(regex, package, arch) + f"-{arch}.pkg.tar.xz"
|
|
logging.debug(f"{package}: found {tarball}")
|
|
|
|
return tarball, f"{BASE_URL}/{arch}/{tarball}"
|