From 45a23d14920133281d102760ec9be2be9da82e2b Mon Sep 17 00:00:00 2001 From: 苏向夜 Date: Sat, 30 Mar 2024 15:25:11 +0800 Subject: feat(build): add readme file and pyproject file into builded ipk --- coc/src/__init__.py | 9 ----- coc/src/events.py | 8 ----- coc/src/handlers.py | 8 ----- coc/src/interceptors.py | 8 ----- examples/.gitignore | 60 --------------------------------- examples/example/.gitignore | 64 ++++++++++++++++++++++++++++++++++++ examples/example/README.md | 1 + examples/example/infini.toml | 13 ++++++++ examples/example/pyproject.toml | 17 ++++++++++ examples/example/src/__init__.py | 9 +++++ examples/example/src/events.py | 8 +++++ examples/example/src/handlers.py | 8 +++++ examples/example/src/interceptors.py | 8 +++++ examples/infini.toml | 14 -------- examples/src/__init__.py | 8 ----- examples/src/events.py | 8 ----- examples/src/handlers.py | 8 ----- examples/src/interceptors.py | 8 ----- src/ipm/models/ipk.py | 11 +++++-- src/ipm/utils/freeze.py | 8 ++++- 20 files changed, 144 insertions(+), 142 deletions(-) delete mode 100644 coc/src/__init__.py delete mode 100644 coc/src/events.py delete mode 100644 coc/src/handlers.py delete mode 100644 coc/src/interceptors.py delete mode 100644 examples/.gitignore create mode 100644 examples/example/.gitignore create mode 100644 examples/example/README.md create mode 100644 examples/example/infini.toml create mode 100644 examples/example/pyproject.toml create mode 100644 examples/example/src/__init__.py create mode 100644 examples/example/src/events.py create mode 100644 examples/example/src/handlers.py create mode 100644 examples/example/src/interceptors.py delete mode 100644 examples/infini.toml delete mode 100644 examples/src/__init__.py delete mode 100644 examples/src/events.py delete mode 100644 examples/src/handlers.py delete mode 100644 examples/src/interceptors.py diff --git a/coc/src/__init__.py b/coc/src/__init__.py deleted file mode 100644 index e5bc7df..0000000 --- a/coc/src/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# Initialized `events.py` generated by ipm. -# Regists your text events and regist global variables here. -# Documents at https://docs.hydroroll.team/ipm - -from .events import register as events_register -from .handlers import register as handlers_register -from .interceptors import register as interceptors_register - -__all__ = ["events_register", "handlers_register", "interceptors_register"] \ No newline at end of file diff --git a/coc/src/events.py b/coc/src/events.py deleted file mode 100644 index 9bbb43c..0000000 --- a/coc/src/events.py +++ /dev/null @@ -1,8 +0,0 @@ -# Initialized `events.py` generated by ipm. -# Regists your text events and regist global variables here. -# Documents at https://docs.hydroroll.team/ipm - -from infini.register import Register - - -register = Register() diff --git a/coc/src/handlers.py b/coc/src/handlers.py deleted file mode 100644 index f997a03..0000000 --- a/coc/src/handlers.py +++ /dev/null @@ -1,8 +0,0 @@ -# Initialized `handlers.py` generated by ipm. -# Regists your handlers here. -# Documents at https://docs.hydroroll.team/ipm - -from infini.register import Register - - -register = Register() diff --git a/coc/src/interceptors.py b/coc/src/interceptors.py deleted file mode 100644 index 518d0bd..0000000 --- a/coc/src/interceptors.py +++ /dev/null @@ -1,8 +0,0 @@ -# Initialized `interceptors.py` generated by ipm. -# Regists your pre-interceptors and interceptors here. -# Documents at https://docs.hydroroll.team/ipm - -from infini.register import Register - - -register = Register() diff --git a/examples/.gitignore b/examples/.gitignore deleted file mode 100644 index b43f7a5..0000000 --- a/examples/.gitignore +++ /dev/null @@ -1,60 +0,0 @@ -# Initialized `.gitignores` @generated by IPM. -# Python -__pycache__/ -*.pyc - -# Builds -.ipm-build/ -dist/ - -# Distribution / packaging -eggs/ -.eggs/ -downloads/ -develop-eggs/ -sdist/ -*.egg-info/ -wheels/ -*.egg -MANIFEST - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm-project.org/#use-with-ide -.pdm.toml -.pdm-python -.pdm-build/ - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ diff --git a/examples/example/.gitignore b/examples/example/.gitignore new file mode 100644 index 0000000..2a31abc --- /dev/null +++ b/examples/example/.gitignore @@ -0,0 +1,64 @@ +# Initialized `.gitignores` @generated by IPM. +# Python +__pycache__/ +*.pyc + +# IPM Builds +.ipm-build/ +dist/ + +# Cached Databases +*.db +*.sqlite3 + +# Distribution / packaging +eggs/ +.eggs/ +downloads/ +develop-eggs/ +sdist/ +*.egg-info/ +wheels/ +*.egg +MANIFEST + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm-project.org/#use-with-ide +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Environments +.env* +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ diff --git a/examples/example/README.md b/examples/example/README.md new file mode 100644 index 0000000..ca82a43 --- /dev/null +++ b/examples/example/README.md @@ -0,0 +1 @@ +# EXAMPLE 规则包文档 \ No newline at end of file diff --git a/examples/example/infini.toml b/examples/example/infini.toml new file mode 100644 index 0000000..a13d308 --- /dev/null +++ b/examples/example/infini.toml @@ -0,0 +1,13 @@ +[project] +name = "example" +version = "0.1.0" +description = "示例规则包" +authors = [ + {name = "fu050409",email = "fu050409@163.com"}, +] +license = "AGPLv3" +readme = "README.md" + +[requirements] + +[dependencies] diff --git a/examples/example/pyproject.toml b/examples/example/pyproject.toml new file mode 100644 index 0000000..b72ff50 --- /dev/null +++ b/examples/example/pyproject.toml @@ -0,0 +1,17 @@ +[project] +name = "example" +version = "0.1.0" +description = "示例规则包" +authors = [ + {name = "fu050409",email = "fu050409@163.com"}, +] +license = {text = "AGPLv3"} +dependencies = ["infini>2.1.0"] +requires-python = ">=3.8" +readme = "README.md" + +[tool.pdm] +distribution = true + +[tool.pdm.dev-dependencies] +dev = ["pytest"] diff --git a/examples/example/src/__init__.py b/examples/example/src/__init__.py new file mode 100644 index 0000000..e5bc7df --- /dev/null +++ b/examples/example/src/__init__.py @@ -0,0 +1,9 @@ +# Initialized `events.py` generated by ipm. +# Regists your text events and regist global variables here. +# Documents at https://docs.hydroroll.team/ipm + +from .events import register as events_register +from .handlers import register as handlers_register +from .interceptors import register as interceptors_register + +__all__ = ["events_register", "handlers_register", "interceptors_register"] \ No newline at end of file diff --git a/examples/example/src/events.py b/examples/example/src/events.py new file mode 100644 index 0000000..9bbb43c --- /dev/null +++ b/examples/example/src/events.py @@ -0,0 +1,8 @@ +# Initialized `events.py` generated by ipm. +# Regists your text events and regist global variables here. +# Documents at https://docs.hydroroll.team/ipm + +from infini.register import Register + + +register = Register() diff --git a/examples/example/src/handlers.py b/examples/example/src/handlers.py new file mode 100644 index 0000000..f997a03 --- /dev/null +++ b/examples/example/src/handlers.py @@ -0,0 +1,8 @@ +# Initialized `handlers.py` generated by ipm. +# Regists your handlers here. +# Documents at https://docs.hydroroll.team/ipm + +from infini.register import Register + + +register = Register() diff --git a/examples/example/src/interceptors.py b/examples/example/src/interceptors.py new file mode 100644 index 0000000..518d0bd --- /dev/null +++ b/examples/example/src/interceptors.py @@ -0,0 +1,8 @@ +# Initialized `interceptors.py` generated by ipm. +# Regists your pre-interceptors and interceptors here. +# Documents at https://docs.hydroroll.team/ipm + +from infini.register import Register + + +register = Register() diff --git a/examples/infini.toml b/examples/infini.toml deleted file mode 100644 index df0c49d..0000000 --- a/examples/infini.toml +++ /dev/null @@ -1,14 +0,0 @@ -[project] -name = "examples" -version = "0.1.0" -description = "EXAMPLES 规则包" -authors = [ - {name = "admin",email = "admin@example.com"}, -] -license = "MIT" -webpage = "" -unzip = 1 - -[requirements] - -[dependencies] diff --git a/examples/src/__init__.py b/examples/src/__init__.py deleted file mode 100644 index 9bbb43c..0000000 --- a/examples/src/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# Initialized `events.py` generated by ipm. -# Regists your text events and regist global variables here. -# Documents at https://docs.hydroroll.team/ipm - -from infini.register import Register - - -register = Register() diff --git a/examples/src/events.py b/examples/src/events.py deleted file mode 100644 index 9bbb43c..0000000 --- a/examples/src/events.py +++ /dev/null @@ -1,8 +0,0 @@ -# Initialized `events.py` generated by ipm. -# Regists your text events and regist global variables here. -# Documents at https://docs.hydroroll.team/ipm - -from infini.register import Register - - -register = Register() diff --git a/examples/src/handlers.py b/examples/src/handlers.py deleted file mode 100644 index f997a03..0000000 --- a/examples/src/handlers.py +++ /dev/null @@ -1,8 +0,0 @@ -# Initialized `handlers.py` generated by ipm. -# Regists your handlers here. -# Documents at https://docs.hydroroll.team/ipm - -from infini.register import Register - - -register = Register() diff --git a/examples/src/interceptors.py b/examples/src/interceptors.py deleted file mode 100644 index 518d0bd..0000000 --- a/examples/src/interceptors.py +++ /dev/null @@ -1,8 +0,0 @@ -# Initialized `interceptors.py` generated by ipm. -# Regists your pre-interceptors and interceptors here. -# Documents at https://docs.hydroroll.team/ipm - -from infini.register import Register - - -register = Register() 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) -- cgit v1.2.3-70-g09d2