diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ipm/models/ipk.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/ipm/models/ipk.py b/src/ipm/models/ipk.py index aa7513f..5b327a1 100644 --- a/src/ipm/models/ipk.py +++ b/src/ipm/models/ipk.py @@ -176,6 +176,20 @@ class InfiniProject(InfiniPackage): return self._data @property + def metadata(self) -> dict: + return self._data["project"] # type: ignore + + @property + def readme(self) -> str: + project = self._data.get("project") + if not project: + raise ProjectError("项目文件中不存在`project`项!") + path = self._source_path.joinpath(project["readme"]) + if not path.exists(): + raise ProjectError("配置文件中的自述文件不存在!") + return path.read_text(encoding="utf-8") + + @property def name(self) -> str: return self._data["project"]["name"] # type: ignore @@ -192,8 +206,8 @@ class InfiniProject(InfiniPackage): return Authors(self._data["project"]["authors"]) # type: ignore @property - def webpage(self) -> str: - return self._data["project"]["webpage"] # type: ignore + def homepage(self) -> str: + return self._data["project"]["urls"]["homepage"] # type: ignore @property def unzip(self) -> Union[str, int]: @@ -220,6 +234,10 @@ class InfiniProject(InfiniPackage): for name, index in self._data.get("yggdrasils", {}).items() } or {} + @property + def topics(self) -> List[str]: + return self._data["project"]["topics"] # type: ignore + class InfiniFrozenPackage(InfiniPackage): def __init__(self, source_path: Union[str, Path], name: str, version: str) -> None: |
