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 typing import Optional
|
||||||
|
from urllib.request import urlopen
|
||||||
|
|
||||||
|
from exec.file import get_temp_dir, makedir
|
||||||
|
|
||||||
|
|
||||||
class PackageInfo:
|
class PackageInfo:
|
||||||
|
@ -40,8 +47,27 @@ class BinaryPackage(PackageInfo):
|
||||||
|
|
||||||
|
|
||||||
class LocalPackage(BinaryPackage):
|
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):
|
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
Add a link
Reference in a new issue