mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-22 21:25:43 -05:00
distro.package: add Package.acquire()
This commit is contained in:
parent
a2c8868d61
commit
4154b2dfe3
1 changed files with 28 additions and 2 deletions
|
@ -1,4 +1,11 @@
|
|||
import logging
|
||||
import os
|
||||
|
||||
from shutil import copyfileobj
|
||||
from typing import Optional
|
||||
from urllib.request import urlopen
|
||||
|
||||
from exec.file import get_temp_dir, makedir
|
||||
|
||||
|
||||
class PackageInfo:
|
||||
|
@ -40,8 +47,27 @@ class BinaryPackage(PackageInfo):
|
|||
|
||||
|
||||
class LocalPackage(BinaryPackage):
|
||||
pass
|
||||
|
||||
def acquire(self) -> str:
|
||||
assert self.resolved_url and self.filename and self.filename in self.resolved_url
|
||||
path = f'{self.resolved_url.split("file://")[1]}'
|
||||
assert os.path.exists(path) or print(path)
|
||||
return path
|
||||
|
||||
|
||||
class RemotePackage(BinaryPackage):
|
||||
pass
|
||||
|
||||
def acquire(self, dest_dir: Optional[str] = None) -> str:
|
||||
assert self.resolved_url and '.pkg.tar.' in self.resolved_url
|
||||
url = f"{self.resolved_url}"
|
||||
assert url
|
||||
|
||||
dest_dir = dest_dir or get_temp_dir()
|
||||
makedir(dest_dir)
|
||||
dest_file_path = os.path.join(dest_dir, self.filename)
|
||||
|
||||
logging.info(f"Trying to download package {url}")
|
||||
with urlopen(url) as fsrc, open(dest_file_path, 'wb') as fdst:
|
||||
copyfileobj(fsrc, fdst)
|
||||
logging.info(f"{self.filename} downloaded from repos")
|
||||
return dest_file_path
|
||||
|
|
Loading…
Add table
Reference in a new issue