distro/package: acquire(): allow overriding filename and use utils.download_file()

This commit is contained in:
InsanePrawn 2023-04-17 06:21:34 +02:00
parent a28550825f
commit 7666b91efc

View file

@ -1,11 +1,10 @@
import logging import logging
import os import os
from shutil import copyfileobj
from typing import Optional, Union from typing import Optional, Union
from urllib.request import urlopen
from exec.file import get_temp_dir, makedir from exec.file import get_temp_dir, makedir
from utils import download_file
class PackageInfo: class PackageInfo:
@ -77,17 +76,16 @@ class LocalPackage(BinaryPackage):
class RemotePackage(BinaryPackage): class RemotePackage(BinaryPackage):
def acquire(self, dest_dir: Optional[str] = None) -> str: def acquire(self, dest_dir: Optional[str] = None, filename: Optional[str] = None) -> str:
assert self.resolved_url and '.pkg.tar.' in self.resolved_url assert self.resolved_url and '.pkg.tar.' in self.resolved_url
url = f"{self.resolved_url}" url = f"{self.resolved_url}"
assert url assert url
dest_dir = dest_dir or get_temp_dir() dest_dir = dest_dir or get_temp_dir()
makedir(dest_dir) makedir(dest_dir)
dest_file_path = os.path.join(dest_dir, self.filename) dest_file_path = os.path.join(dest_dir, filename or self.filename)
logging.info(f"Trying to download package {url}") logging.info(f"Trying to download package {url}")
with urlopen(url) as fsrc, open(dest_file_path, 'wb') as fdst: download_file(dest_file_path, url)
copyfileobj(fsrc, fdst)
logging.info(f"{self.filename} downloaded from repos") logging.info(f"{self.filename} downloaded from repos")
return dest_file_path return dest_file_path