Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/arch/loader.py
Show First 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | |||||
class ArchLoader(PackageLoader[ArchPackageInfo]): | class ArchLoader(PackageLoader[ArchPackageInfo]): | ||||
visit_type = "arch" | visit_type = "arch" | ||||
def __init__( | def __init__( | ||||
self, | self, | ||||
storage: StorageInterface, | storage: StorageInterface, | ||||
url: str, | url: str, | ||||
artifacts: List[Dict[str, Any]], | artifacts: List[Dict[str, Any]], | ||||
arch_metadata: List[Dict[str, Any]], | |||||
**kwargs, | **kwargs, | ||||
): | ): | ||||
super().__init__(storage=storage, url=url, **kwargs) | super().__init__(storage=storage, url=url, **kwargs) | ||||
self.url = url | self.url = url | ||||
self.artifacts: Dict[str, Dict] = { | self.artifacts: Dict[str, Dict] = { | ||||
artifact["version"]: artifact for artifact in artifacts | artifact["version"]: artifact for artifact in artifacts | ||||
} | } | ||||
self.arch_metadata: Dict[str, Dict] = { | |||||
metadata["version"]: metadata for metadata in arch_metadata | |||||
} | |||||
def get_versions(self) -> Sequence[str]: | def get_versions(self) -> Sequence[str]: | ||||
"""Get all released versions of an Arch Linux package | """Get all released versions of an Arch Linux package | ||||
Returns: | Returns: | ||||
A sequence of versions | A sequence of versions | ||||
Example:: | Example:: | ||||
Show All 21 Lines | def get_package_info(self, version: str) -> Iterator[Tuple[str, ArchPackageInfo]]: | ||||
Args: | Args: | ||||
version: arch version (e.g: "0.1.0") | version: arch version (e.g: "0.1.0") | ||||
Returns: | Returns: | ||||
Iterator of tuple (release_name, p_info) | Iterator of tuple (release_name, p_info) | ||||
""" | """ | ||||
artifact = self.artifacts[version] | artifact = self.artifacts[version] | ||||
assert version == artifact["version"] | metadata = self.arch_metadata[version] | ||||
assert version == artifact["version"] == metadata["version"] | |||||
p_info = ArchPackageInfo( | p_info = ArchPackageInfo( | ||||
name=artifact["name"], | name=metadata["name"], | ||||
filename=artifact["filename"], | filename=artifact["filename"], | ||||
url=artifact["url"], | url=artifact["url"], | ||||
version=version, | version=version, | ||||
last_modified=artifact["last_modified"], | last_modified=metadata["last_modified"], | ||||
) | ) | ||||
yield release_name(version, artifact["filename"]), p_info | yield release_name(version, artifact["filename"]), p_info | ||||
def build_release( | def build_release( | ||||
self, p_info: ArchPackageInfo, uncompressed_path: str, directory: Sha1Git | self, p_info: ArchPackageInfo, uncompressed_path: str, directory: Sha1Git | ||||
) -> Optional[Release]: | ) -> Optional[Release]: | ||||
intrinsic_metadata = extract_intrinsic_metadata(Path(uncompressed_path)) | intrinsic_metadata = extract_intrinsic_metadata(Path(uncompressed_path)) | ||||
author = Person.from_fullname(intrinsic_metadata["packager"].encode()) | author = Person.from_fullname(intrinsic_metadata["packager"].encode()) | ||||
Show All 16 Lines |