diff options
| author | 2024-03-18 18:56:18 +0800 | |
|---|---|---|
| committer | 2024-03-18 18:56:18 +0800 | |
| commit | fcaf7de164d28b7c6c3a633d10b2d8f3f6a1e86b (patch) | |
| tree | 2bbf417d58f1d3c394c513f32ab934bff393ea05 /src | |
| parent | 58b36b64e4674df312c42b479bf67925d71d9fba (diff) | |
| download | ipm-fcaf7de164d28b7c6c3a633d10b2d8f3f6a1e86b.tar.gz ipm-fcaf7de164d28b7c6c3a633d10b2d8f3f6a1e86b.zip | |
feat(ipk): add some useful fields for ipk model
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: |
