diff --git a/beet/toolchain/project.py b/beet/toolchain/project.py index 3f5fee5f..96d9dc2c 100644 --- a/beet/toolchain/project.py +++ b/beet/toolchain/project.py @@ -274,6 +274,26 @@ def build(self) -> Iterator[Context]: whitelist=self.config.whitelist, ) + # populate ctx.pack with config info + if self.config.data_pack.pack_format: + ctx.data.pack_format = self.config.data_pack.pack_format + if self.config.data_pack.name: + ctx.data.name = self.config.data_pack.name + if self.config.data_pack.description: + ctx.data.description = self.config.data_pack.description + if self.config.data_pack.supported_formats: + ctx.data.supported_formats = self.config.data_pack.supported_formats + if self.config.resource_pack.pack_format: + ctx.assets.pack_format = self.config.resource_pack.pack_format + if self.config.resource_pack.name: + ctx.assets.name = self.config.resource_pack.name + if self.config.resource_pack.description: + ctx.assets.description = self.config.resource_pack.description + if self.config.resource_pack.supported_formats: + ctx.assets.supported_formats = ( + self.config.resource_pack.supported_formats + ) + plugins: List[PluginSpec] = [self.bootstrap] plugins.extend( ( diff --git a/tests/ctx_config_examples/mcmeta/beet.json b/tests/ctx_config_examples/mcmeta/beet.json new file mode 100644 index 00000000..25eb4acd --- /dev/null +++ b/tests/ctx_config_examples/mcmeta/beet.json @@ -0,0 +1,18 @@ +{ + "data_pack": { + "name": "My Data Pack", + "description": "a data pack", + "pack_format": 6, + "supported_formats": [0,6] + }, + "resource_pack": { + "name": "My Resource Pack", + "description": "a resource pack", + "pack_format": 10, + "supported_formats": { + "min_inclusive": 10, + "max_inclusive": 20 + } + }, + "pipeline": ["mcmeta"] +} diff --git a/tests/ctx_config_examples/mcmeta/mcmeta.py b/tests/ctx_config_examples/mcmeta/mcmeta.py new file mode 100644 index 00000000..9d1e9a41 --- /dev/null +++ b/tests/ctx_config_examples/mcmeta/mcmeta.py @@ -0,0 +1,9 @@ +from beet import Context + + +def beet_default(ctx: Context): + all = [ + f"{ctx.data.mcmeta.data}", + f"{ctx.assets.mcmeta.data}", + ] + ctx.meta["pytest"] = "\n".join(all) + "\n" diff --git a/tests/ctx_config_examples/pack_info/beet.json b/tests/ctx_config_examples/pack_info/beet.json new file mode 100644 index 00000000..dafa94b9 --- /dev/null +++ b/tests/ctx_config_examples/pack_info/beet.json @@ -0,0 +1,18 @@ +{ + "data_pack": { + "name": "My Data Pack", + "description": "a data pack", + "pack_format": 6, + "supported_formats": [0,6] + }, + "resource_pack": { + "name": "My Resource Pack", + "description": "a resource pack", + "pack_format": 10, + "supported_formats": { + "min_inclusive": 10, + "max_inclusive": 20 + } + }, + "pipeline": ["pack_info"] +} diff --git a/tests/ctx_config_examples/pack_info/pack_info.py b/tests/ctx_config_examples/pack_info/pack_info.py new file mode 100644 index 00000000..7c981f53 --- /dev/null +++ b/tests/ctx_config_examples/pack_info/pack_info.py @@ -0,0 +1,15 @@ +from beet import Context + + +def beet_default(ctx: Context): + all = [ + f"{ctx.data.name}", + f"{ctx.data.description}", + f"{ctx.data.pack_format}", + f"{ctx.data.supported_formats}", + f"{ctx.assets.name}", + f"{ctx.assets.description}", + f"{ctx.assets.pack_format}", + f"{ctx.assets.supported_formats}", + ] + ctx.meta["pytest"] = "\n".join(all) + "\n" diff --git a/tests/ctx_config_examples/project_info/beet.json b/tests/ctx_config_examples/project_info/beet.json new file mode 100644 index 00000000..c8c68b0c --- /dev/null +++ b/tests/ctx_config_examples/project_info/beet.json @@ -0,0 +1,9 @@ +{ + "author": "somebody", + "version": "1.2.3", + "name": "BEET", + "id": "beet", + "description": "a beet project", + "minecraft": "1.19", + "pipeline": ["project_info"] +} diff --git a/tests/ctx_config_examples/project_info/project_info.py b/tests/ctx_config_examples/project_info/project_info.py new file mode 100644 index 00000000..fc402bb6 --- /dev/null +++ b/tests/ctx_config_examples/project_info/project_info.py @@ -0,0 +1,13 @@ +from beet import Context + + +def beet_default(ctx: Context): + all = [ + f"{ctx.minecraft_version}", + f"{ctx.project_author}", + f"{ctx.project_description}", + f"{ctx.project_id}", + f"{ctx.project_name}", + f"{ctx.project_version}", + ] + ctx.meta["pytest"] = "\n".join(all) + "\n" diff --git a/tests/snapshots/ctx_config__examples_mcmeta__0.txt b/tests/snapshots/ctx_config__examples_mcmeta__0.txt new file mode 100644 index 00000000..86767620 --- /dev/null +++ b/tests/snapshots/ctx_config__examples_mcmeta__0.txt @@ -0,0 +1,2 @@ +{'pack': {'pack_format': 6, 'description': 'a data pack', 'supported_formats': [0, 6]}} +{'pack': {'pack_format': 10, 'description': 'a resource pack', 'supported_formats': {'min_inclusive': 10, 'max_inclusive': 20}}} diff --git a/tests/snapshots/ctx_config__examples_pack_info__0.txt b/tests/snapshots/ctx_config__examples_pack_info__0.txt new file mode 100644 index 00000000..f199c225 --- /dev/null +++ b/tests/snapshots/ctx_config__examples_pack_info__0.txt @@ -0,0 +1,8 @@ +My Data Pack +a data pack +6 +[0, 6] +My Resource Pack +a resource pack +10 +{'min_inclusive': 10, 'max_inclusive': 20} diff --git a/tests/snapshots/ctx_config__examples_project_info__0.txt b/tests/snapshots/ctx_config__examples_project_info__0.txt new file mode 100644 index 00000000..9f0f6f7c --- /dev/null +++ b/tests/snapshots/ctx_config__examples_project_info__0.txt @@ -0,0 +1,6 @@ +1.19 +somebody +a beet project +beet +BEET +1.2.3 diff --git a/tests/test_ctx_config.py b/tests/test_ctx_config.py new file mode 100644 index 00000000..4e148d4b --- /dev/null +++ b/tests/test_ctx_config.py @@ -0,0 +1,12 @@ +import os + +import pytest +from pytest_insta import SnapshotFixture + +from beet import run_beet + + +@pytest.mark.parametrize("directory", os.listdir("tests/ctx_config_examples")) +def test_examples(snapshot: SnapshotFixture, directory: str): + with run_beet(directory=f"tests/ctx_config_examples/{directory}") as ctx: + assert snapshot() == f'{ctx.meta["pytest"]}'