distro/package: refactor class PackageInfo into class BinaryPackage(PackageInfo)

This commit is contained in:
InsanePrawn 2022-08-31 15:36:21 +02:00
parent daa7b68738
commit dbe3dc91a3
4 changed files with 14 additions and 11 deletions

View file

@ -4,6 +4,9 @@ from typing import Optional
class PackageInfo:
name: str
version: str
class BinaryPackage(PackageInfo):
filename: str
resolved_url: Optional[str]
@ -22,12 +25,12 @@ class PackageInfo:
def __repr__(self):
return f'{self.name}@{self.version}'
@staticmethod
def parse_desc(desc_str: str, resolved_repo_url=None):
@classmethod
def parse_desc(clss, desc_str: str, resolved_repo_url=None):
"""Parses a desc file, returning a PackageInfo"""
pruned_lines = ([line.strip() for line in desc_str.split('%') if line.strip()])
desc = {}
for key, value in zip(pruned_lines[0::2], pruned_lines[1::2]):
desc[key.strip()] = value.strip()
return PackageInfo(desc['NAME'], desc['VERSION'], desc['FILENAME'], resolved_url='/'.join([resolved_repo_url, desc['FILENAME']]))
return clss(desc['NAME'], desc['VERSION'], desc['FILENAME'], resolved_url='/'.join([resolved_repo_url, desc['FILENAME']]))