aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2024-03-30 15:25:11 +0800
committer苏向夜 <fu050409@163.com>2024-03-30 15:25:11 +0800
commit45a23d14920133281d102760ec9be2be9da82e2b (patch)
tree1cfd9c1d5e2bef7a2dbd3843e15d1e04dab053ee /src
parentbab530d5bd1d8a99959d9067b58fb2ec0f4981f8 (diff)
downloadipm-45a23d14920133281d102760ec9be2be9da82e2b.tar.gz
ipm-45a23d14920133281d102760ec9be2be9da82e2b.zip
feat(build): add readme file and pyproject file into builded ipk
Diffstat (limited to 'src')
-rw-r--r--src/ipm/models/ipk.py11
-rw-r--r--src/ipm/utils/freeze.py8
2 files changed, 16 insertions, 3 deletions
diff --git a/src/ipm/models/ipk.py b/src/ipm/models/ipk.py
index db98eb4..6a314b9 100644
--- a/src/ipm/models/ipk.py
+++ b/src/ipm/models/ipk.py
@@ -126,13 +126,20 @@ class InfiniProject(InfiniPackage):
@property
def readme(self) -> str:
- project = self._data.get("project")
+ path = self._source_path.joinpath(self.readme_file)
+ return path.read_text(encoding="utf-8")
+
+ @property
+ def readme_file(self) -> str:
+ project: dict = self._data.unwrap().get("project", {})
if not project:
raise ProjectError("项目文件中不存在`project`项!")
+ if "readme" not in project.keys():
+ raise ProjectError("项目文件中不存在`project.readme`项!")
path = self._source_path.joinpath(project["readme"])
if not path.exists():
raise ProjectError("配置文件中的自述文件不存在!")
- return path.read_text(encoding="utf-8")
+ return project["readme"]
@property
def name(self) -> str:
diff --git a/src/ipm/utils/freeze.py b/src/ipm/utils/freeze.py
index 58314df..878bd2b 100644
--- a/src/ipm/utils/freeze.py
+++ b/src/ipm/utils/freeze.py
@@ -36,8 +36,14 @@ def build_ipk(ipk: InfiniProject, echo: bool = False) -> InfiniFrozenPackage:
success("开发环境构建完毕.", echo)
update("复制工程文件...", echo)
- shutil.copytree(src_path, arc_dir / "src")
+ shutil.copytree(src_path, arc_dir.joinpath("src"))
shutil.copy2(ipk._source_path / "infini.toml", arc_dir / "infini.toml")
+ shutil.copy2(
+ ipk._source_path.joinpath("pyproject.toml"), arc_dir.joinpath("pyproject.toml")
+ )
+ shutil.copy2(
+ ipk._source_path.joinpath(ipk.readme_file), arc_dir.joinpath(ipk.readme_file)
+ )
success("工程文件复制完毕.", echo)
update("打包 [bold green]ipk[/bold green]文件...", echo)