Skip to content

Commit

Permalink
feat: add PluginOptions
Browse files Browse the repository at this point in the history
  • Loading branch information
vberlier committed Nov 29, 2022
1 parent 6aa1092 commit d6de473
Show file tree
Hide file tree
Showing 27 changed files with 79 additions and 108 deletions.
6 changes: 2 additions & 4 deletions beet/contrib/autosave.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@
from dataclasses import dataclass, field
from typing import List

from pydantic import BaseModel
from beet import Context, PluginOptions, PluginSpec

from beet import Context, PluginSpec


class AutosaveOptions(BaseModel):
class AutosaveOptions(PluginOptions):
link: bool = False
output_handlers: List[str] = []
link_handlers: List[str] = []
Expand Down
14 changes: 9 additions & 5 deletions beet/contrib/babelbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,23 @@
from pathlib import Path
from typing import Dict, Optional, Type, Union

from pydantic import BaseModel

from beet import Context, Language, configurable
from beet import (
Context,
Language,
ListOption,
PackageablePath,
PluginOptions,
configurable,
)
from beet.core.utils import FileSystemPath
from beet.toolchain.config import ListOption, PackageablePath

DialectLike = Union[str, Dialect, Type[Dialect]]


logger = logging.getLogger(__name__)


class BabelboxOptions(BaseModel):
class BabelboxOptions(PluginOptions):
load: ListOption[PackageablePath] = ListOption()
dialect: Optional[str] = None
namespace: str = "minecraft"
Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/clear.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@
]


from pydantic import BaseModel
from beet import Context, PluginOptions, configurable

from beet import Context, configurable


class ClearOptions(BaseModel):
class ClearOptions(PluginOptions):
resource_pack: bool = True
data_pack: bool = True

Expand Down
5 changes: 2 additions & 3 deletions beet/contrib/copy_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,14 @@
from pathlib import Path
from typing import Dict, Iterator, Tuple, Type

from pydantic import BaseModel

from beet import (
BinaryFile,
Context,
JsonFile,
ListOption,
PackageablePath,
PackFile,
PluginOptions,
PngFile,
TextFile,
YamlFile,
Expand All @@ -32,7 +31,7 @@
from beet.core.utils import FileSystemPath


class CopyFilesOptions(BaseModel):
class CopyFilesOptions(PluginOptions):
resource_pack: Dict[str, ListOption[PackageablePath]] = {}
data_pack: Dict[str, ListOption[PackageablePath]] = {}
output: Dict[str, ListOption[PackageablePath]] = {}
Expand Down
5 changes: 2 additions & 3 deletions beet/contrib/dbg.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@
from typing import Any, Dict, List, Tuple

from jinja2.nodes import Node, Output, TemplateData
from pydantic import BaseModel

from beet import Context, JinjaExtension
from beet import Context, JinjaExtension, PluginOptions
from beet.core.utils import JsonDict, TextComponent


class DbgOptions(BaseModel):
class DbgOptions(PluginOptions):
command: str = "tellraw @a {payload}"

enabled: bool = True
Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/extra_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,12 @@

from typing import List

from pydantic import BaseModel

from beet import Context, configurable
from beet import Context, PluginOptions, configurable

from .copy_files import guess_file_type


class ExtraFilesOptions(BaseModel):
class ExtraFilesOptions(PluginOptions):
resource_pack: List[str] = []
data_pack: List[str] = []
resource_pack_namespace: List[str] = []
Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/find_replace.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
Pack,
PackSelectOption,
PackSelector,
PluginOptions,
RegexOption,
ResourcePack,
TemplateManager,
Expand Down Expand Up @@ -80,14 +81,11 @@ def apply(value: str) -> str:
return apply


class FindReplaceOptions(BaseModel):
class FindReplaceOptions(PluginOptions):
resource_pack: PackSelectOption = PackSelectOption()
data_pack: PackSelectOption = PackSelectOption()
substitute: ListOption[Union[SubstitutionOption, "FindReplaceOptions"]]

class Config:
extra = "forbid"

def compile(
self,
template: TemplateManager,
Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/format_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,10 @@
import json
from typing import Any, Callable, Optional, Tuple, Union

from pydantic import BaseModel
from beet import Context, JsonFileBase, PluginOptions, configurable

from beet import Context, JsonFileBase, configurable


class FormatJsonOptions(BaseModel):
class FormatJsonOptions(PluginOptions):
ensure_ascii: bool = True
allow_nan: bool = True
indent: Union[int, str, None] = 2
Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/function_header.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@

from typing import List, Optional

from pydantic import BaseModel
from beet import Context, PluginOptions, configurable

from beet import Context, configurable


class FunctionHeaderOptions(BaseModel):
class FunctionHeaderOptions(PluginOptions):
match: List[str] = []
template: Optional[str] = "function_header.mcfunction"

Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/hangman.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@
import re
from typing import Iterable, Iterator, List, Literal, Optional, Tuple

from pydantic import BaseModel

from beet import Context, Function, configurable
from beet import Context, Function, PluginOptions, configurable
from beet.toolchain.utils import stable_hash

logger = logging.getLogger(__name__)
Expand All @@ -49,7 +47,7 @@
Token = Tuple[TokenType, str]


class HangmanOptions(BaseModel):
class HangmanOptions(PluginOptions):
match: List[str] = []


Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/installation_advancement.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,11 @@

from typing import Optional

from pydantic import BaseModel

from beet import Advancement, Context, configurable
from beet import Advancement, Context, PluginOptions, configurable
from beet.core.utils import JsonDict, TextComponent, normalize_string


class InstallationAdvancementOptions(BaseModel):
class InstallationAdvancementOptions(PluginOptions):
icon: JsonDict = {"item": "minecraft:apple"}
author_namespace: Optional[str] = None
author_description: str = ""
Expand Down
5 changes: 2 additions & 3 deletions beet/contrib/json_reporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,13 @@
from functools import cached_property
from typing import Any, Iterator, List, Optional, Union

from pydantic import BaseModel

from beet import (
BeetException,
BinaryFileBase,
Context,
DataPack,
ListOption,
PluginOptions,
PluginSpec,
ResourcePack,
TextFileBase,
Expand All @@ -37,7 +36,7 @@
from beet.core.utils import JsonDict, format_exc, get_import_string


class JsonReporterOptions(BaseModel):
class JsonReporterOptions(PluginOptions):
enabled: bool = False
binary_files: bool = False
exception_filter: Optional[ListOption[str]] = None
Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/line_endings.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@

from typing import Any, Optional

from pydantic import BaseModel
from beet import Context, ListOption, PluginOptions, TextFileBase, configurable

from beet import Context, ListOption, TextFileBase, configurable


class LineEndingsOptions(BaseModel):
class LineEndingsOptions(PluginOptions):
extensions: ListOption[str] = ListOption()
newline: Optional[str] = None

Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/load.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,10 @@
from pathlib import Path
from zipfile import ZipFile

from pydantic import BaseModel
from beet import Context, ErrorMessage, PackLoadOptions, PluginOptions, configurable

from beet import Context, ErrorMessage, PackLoadOptions, configurable


class LoadOptions(BaseModel):
class LoadOptions(PluginOptions):
resource_pack: PackLoadOptions = PackLoadOptions()
data_pack: PackLoadOptions = PackLoadOptions()

Expand Down
4 changes: 2 additions & 2 deletions beet/contrib/load_yaml.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from typing import Any, Dict, List, Optional, Type, TypeVar

import yaml
from pydantic import BaseModel

from beet import (
Context,
Expand All @@ -22,6 +21,7 @@
File,
FileOrigin,
Pack,
PluginOptions,
ResourcePack,
configurable,
)
Expand All @@ -33,7 +33,7 @@
PackFile = File[Any, Any]


class LoadYamlOptions(BaseModel):
class LoadYamlOptions(PluginOptions):
resource_pack: List[str] = []
data_pack: List[str] = []

Expand Down
7 changes: 2 additions & 5 deletions beet/contrib/output.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,11 @@

from typing import Optional

from pydantic import BaseModel

from beet import Context, configurable
from beet import Context, ListOption, PluginOptions, configurable
from beet.core.utils import FileSystemPath, log_time
from beet.toolchain.config import ListOption


class OutputOptions(BaseModel):
class OutputOptions(PluginOptions):
directory: Optional[ListOption[FileSystemPath]] = None


Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/rename_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
NamespaceFile,
PackSelector,
PathSpecOption,
PluginOptions,
ResourcePack,
TemplateManager,
configurable,
Expand Down Expand Up @@ -60,13 +61,10 @@ def compile(self, template: TemplateManager) -> List["RenameFilesHandler"]:
]


class RenameFilesOptions(BaseModel):
class RenameFilesOptions(PluginOptions):
resource_pack: RenameOption = RenameOption()
data_pack: RenameOption = RenameOption()

class Config:
extra = "forbid"


@dataclass
class RenameFilesHandler:
Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/render.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,11 @@

from typing import Dict

from pydantic import BaseModel

from beet import Context, ListOption, configurable
from beet import Context, ListOption, PluginOptions, configurable
from beet.core.utils import snake_case


class RenderOptions(BaseModel):
class RenderOptions(PluginOptions):
resource_pack: Dict[str, ListOption[str]] = {}
data_pack: Dict[str, ListOption[str]] = {}

Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/scoreboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@

from typing import List

from pydantic import BaseModel
from beet import Context, Function, PluginOptions, configurable

from beet import Context, Function, configurable


class ScoreboardOptions(BaseModel):
class ScoreboardOptions(PluginOptions):
function: str = "scoreboard"
tags: List[str] = ["minecraft:load"]

Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/strip_final_newlines.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,10 @@
from dataclasses import dataclass
from typing import Any, Callable

from pydantic import BaseModel
from beet import Context, ListOption, PluginOptions, TextFileBase, configurable

from beet import Context, ListOption, TextFileBase, configurable


class StripFinalNewlinesOptions(BaseModel):
class StripFinalNewlinesOptions(PluginOptions):
extensions: ListOption[str] = ListOption()


Expand Down
6 changes: 2 additions & 4 deletions beet/contrib/text_encoding.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@

from typing import Any, Optional

from pydantic import BaseModel
from beet import Context, ListOption, PluginOptions, TextFileBase, configurable

from beet import Context, ListOption, TextFileBase, configurable


class TextEncodingOptions(BaseModel):
class TextEncodingOptions(PluginOptions):
extensions: ListOption[str] = ListOption()
encoding: str = "utf-8"
errors: Optional[str] = None
Expand Down

0 comments on commit d6de473

Please sign in to comment.