aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-03-18 18:56:18 +0800
committer苏向夜 <fu050409@163.com>2024-03-18 18:56:18 +0800
commitfcaf7de164d28b7c6c3a633d10b2d8f3f6a1e86b (patch)
tree2bbf417d58f1d3c394c513f32ab934bff393ea05 /src
parent58b36b64e4674df312c42b479bf67925d71d9fba (diff)
downloadipm-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.py22
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: