#! /usr/bin/python3

import re
import shutil
from urllib.parse import urlparse, urlunparse
from urllib.request import urlopen

import apt
import apt_pkg

uri = 'http://archive.ubuntu.com/ubuntu/pool/main/f/fwupd/fwupd_1.5.8-0ubuntu1_amd64.deb'

ARCH_TO_EFI_NAME = {
    'amd64': 'x64',
    'i386': 'ia32',
    'arm64': 'aa64',
    'armhf': 'arm',
}
ARCH_TO_URL = {
    'amd64': 'https://launchpad.net/ubuntu/+archive/primary/+files/fwupd-signed_1.27.1ubuntu5+1.5.11-0ubuntu1~20.04.2_amd64.deb',
    'i386': 'http://archive.ubuntu.com/ubuntu/pool/main/f/fwupd/fwupd_1.5.8-0ubuntu1_i386.deb',
    'arm64': 'https://launchpad.net/ubuntu/+archive/primary/+files/fwupd-signed_1.27.1ubuntu5+1.5.11-0ubuntu1~20.04.2_arm64.deb',
    'armhf': 'https://launchpad.net/ubuntu/+archive/primary/+files/fwupd-signed_1.27.1ubuntu5+1.5.11-0ubuntu1~20.04.2_armhf.deb',
}
arch = apt_pkg.config['Apt::Architecture']
uri = ARCH_TO_URL[arch]
efi_name = ARCH_TO_EFI_NAME[arch]
cache = apt.Cache()
fwupd_efi = cache["fwupd"].candidate
pool_parsed = urlparse(uri)
dists_dir = "/dists/%s/main/uefi/fwupd-%s/current/" % (
    'hirsute', fwupd_efi.architecture)

for base in (
        "fwupd%s.efi.signed" %efi_name,
        "version",
        ):
    dists_parsed = list(pool_parsed)
    dists_parsed[2] = re.sub(r"/pool/.*", dists_dir + base, dists_parsed[2])
    dists_uri = urlunparse(dists_parsed)
    print("Downloading %s ..." % dists_uri)
    with urlopen(dists_uri) as dists, open(base, "wb") as out:
        shutil.copyfileobj(dists, out)

versionFile = open('version', 'w')
versionFile.write(fwupd_efi.version)
