# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import glob


def update_package():
    # Declaration of local variables
    package_updated = False
    proxies = get_proxies_from_wapt_console()
    if not proxies:
        proxies = get_proxies()
    api_url = "https://api.github.com/repos/rustdesk/rustdesk/releases/latest"
    update_dict = {
        "latest_bin": {
            "windows-x64": "x86_64.exe",
            "windows-x86": "x86-sciter.exe",
            "macos-x64"  : "x86_64.dmg",
            "macos-arm"  : "aarch64.dmg",
            "debian(>=10),ubuntu(>=20)-arm" : "armv7-sciter.deb",
            "debian(>=10),ubuntu(>=20)-arm64" : "aarch64.deb" ,
            "debian(>=10),ubuntu(>=20)-x64" : "x86_64.deb" ,
        }
    }

    # Get data from API
    releases_dict = wgets(api_url, proxies=proxies, as_json=True)
    exe_found = False  # Flag pour indiquer la découverte d'un fichier .msi
    for release in releases_dict:
        if exe_found:
            break
        for asset in releases_dict["assets"]:
            if asset["browser_download_url"].endswith(
                update_dict["latest_bin"][f'{control.target_os}-{ensure_list(control.architecture)[0]}']
            ):
                url_download = asset["browser_download_url"]
                filename = url_download.split("/")[-1]
                last_version = releases_dict["name"].replace("-",".")
                exe_found = True  # Mettre à jour le flag pour indiquer qu'un .exe a été trouvé
                break

    if not isfile(filename):
        package_updated = True
        wget(url_download, filename, proxies=proxies)

    # nettoyer les fichiers temporaires
    for f in glob.glob("*.deb"):
        if f != filename:
            remove_file(f)

    control.set_software_version(last_version)
    control.save_control_to_wapt()

    return package_updated

