mirror of
https://gitlab.com/kupfer/kupferbootstrap.git
synced 2025-02-23 05:35:44 -05:00
distro/repo: scan(): add allow_failure
parameter
This commit is contained in:
parent
066b6abaaa
commit
161e14a438
1 changed files with 29 additions and 11 deletions
|
@ -39,21 +39,39 @@ class Repo(RepoInfo, Generic[BinaryPackageType]):
|
||||||
def resolve_url(self) -> str:
|
def resolve_url(self) -> str:
|
||||||
return resolve_url(self.url_template, repo_name=self.name, arch=self.arch)
|
return resolve_url(self.url_template, repo_name=self.name, arch=self.arch)
|
||||||
|
|
||||||
def scan(self):
|
def scan(self, allow_failure: bool = False) -> bool:
|
||||||
|
failed = False
|
||||||
self.resolved_url = self.resolve_url()
|
self.resolved_url = self.resolve_url()
|
||||||
self.remote = not self.resolved_url.startswith('file://')
|
self.remote = not self.resolved_url.startswith('file://')
|
||||||
path = self.acquire_db_file()
|
try:
|
||||||
|
path = self.acquire_db_file()
|
||||||
|
index = tarfile.open(path)
|
||||||
|
except Exception as ex:
|
||||||
|
if not allow_failure:
|
||||||
|
raise ex
|
||||||
|
logging.error(f"Repo {self.name}, {self.arch}: Error acquiring repo DB: {ex!r}")
|
||||||
|
return False
|
||||||
logging.debug(f'Parsing repo file at {path}')
|
logging.debug(f'Parsing repo file at {path}')
|
||||||
with tarfile.open(path) as index:
|
for node in index.getmembers():
|
||||||
for node in index.getmembers():
|
if os.path.basename(node.name) == 'desc':
|
||||||
if os.path.basename(node.name) == 'desc':
|
pkgname = os.path.dirname(node.name)
|
||||||
logging.debug(f'Parsing desc file for {os.path.dirname(node.name)}')
|
logging.debug(f'Parsing desc file for {pkgname}')
|
||||||
fd = index.extractfile(node)
|
fd = index.extractfile(node)
|
||||||
assert fd
|
assert fd
|
||||||
pkg = self._parse_desc(fd.read().decode())
|
contents = fd.read().decode()
|
||||||
self.packages[pkg.name] = pkg
|
try:
|
||||||
|
pkg = self._parse_desc(contents)
|
||||||
|
except Exception as ex:
|
||||||
|
if not allow_failure:
|
||||||
|
raise ex
|
||||||
|
logging.error(f'Repo {self.name}, {self.arch}: Error parsing desc for "{pkgname}": {ex!r}')
|
||||||
|
failed = True
|
||||||
|
continue
|
||||||
|
self.packages[pkg.name] = pkg
|
||||||
|
if failed:
|
||||||
|
return False
|
||||||
self.scanned = True
|
self.scanned = True
|
||||||
|
return True
|
||||||
|
|
||||||
def _parse_desc(self, desc_text: str): # can't annotate the type properly :(
|
def _parse_desc(self, desc_text: str): # can't annotate the type properly :(
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
Loading…
Add table
Reference in a new issue