Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/cran/loader.py
Show All 24 Lines | |||||
DATE_PATTERN = re.compile(r"^(?P<year>\d{4})-(?P<month>\d{2})$") | DATE_PATTERN = re.compile(r"^(?P<year>\d{4})-(?P<month>\d{2})$") | ||||
@attr.s | @attr.s | ||||
class CRANPackageInfo(BasePackageInfo): | class CRANPackageInfo(BasePackageInfo): | ||||
raw_info = attr.ib(type=Dict[str, Any]) | raw_info = attr.ib(type=Dict[str, Any]) | ||||
name = attr.ib(type=str) | |||||
EXTID_TYPE = "cran-sha256" | EXTID_TYPE = "cran-sha256" | ||||
MANIFEST_FORMAT = string.Template("$version $url") | MANIFEST_FORMAT = string.Template("$version $url") | ||||
@classmethod | @classmethod | ||||
def from_metadata(cls, a_metadata: Dict[str, Any]) -> "CRANPackageInfo": | def from_metadata(cls, a_metadata: Dict[str, Any]) -> "CRANPackageInfo": | ||||
url = a_metadata["url"] | url = a_metadata["url"] | ||||
return CRANPackageInfo( | return CRANPackageInfo( | ||||
url=url, | url=url, | ||||
filename=path.basename(url), | filename=path.basename(url), | ||||
raw_info=a_metadata, | raw_info=a_metadata, | ||||
name=a_metadata["package"], | |||||
version=a_metadata["version"], | version=a_metadata["version"], | ||||
) | ) | ||||
class CRANLoader(PackageLoader[CRANPackageInfo]): | class CRANLoader(PackageLoader[CRANPackageInfo]): | ||||
visit_type = "cran" | visit_type = "cran" | ||||
def __init__( | def __init__( | ||||
Show All 31 Lines | class CRANLoader(PackageLoader[CRANPackageInfo]): | ||||
def build_release( | def build_release( | ||||
self, p_info: CRANPackageInfo, uncompressed_path: str, directory: Sha1Git | self, p_info: CRANPackageInfo, uncompressed_path: str, directory: Sha1Git | ||||
) -> Optional[Release]: | ) -> Optional[Release]: | ||||
# a_metadata is empty | # a_metadata is empty | ||||
metadata = extract_intrinsic_metadata(uncompressed_path) | metadata = extract_intrinsic_metadata(uncompressed_path) | ||||
date = parse_date(metadata.get("Date")) | date = parse_date(metadata.get("Date")) | ||||
author = Person.from_fullname(metadata.get("Maintainer", "").encode()) | author = Person.from_fullname(metadata.get("Maintainer", "").encode()) | ||||
msg = ( | |||||
f"Synthetic release for CRAN source package {p_info.name} " | |||||
f"version {p_info.version}" | |||||
) | |||||
return Release( | return Release( | ||||
name=p_info.version.encode(), | name=p_info.version.encode(), | ||||
message=p_info.version.encode(), | message=msg.encode(), | ||||
date=date, | date=date, | ||||
author=author, | author=author, | ||||
target_type=ObjectType.DIRECTORY, | target_type=ObjectType.DIRECTORY, | ||||
target=directory, | target=directory, | ||||
synthetic=True, | synthetic=True, | ||||
) | ) | ||||
▲ Show 20 Lines • Show All 74 Lines • Show Last 20 Lines |