22 lines
651 B
Python
22 lines
651 B
Python
from dataclasses import dataclass, field
|
|
from pathlib import Path
|
|
|
|
import yaml
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class InstanceSpec:
|
|
port: int
|
|
overlays: list[str] = field(default_factory=list)
|
|
arguments: list[str] = field(default_factory=list)
|
|
config: list[str] = field(default_factory=list)
|
|
|
|
|
|
def load_spec(path: Path) -> InstanceSpec:
|
|
raw = yaml.safe_load(path.read_text()) or {}
|
|
return InstanceSpec(
|
|
port=int(raw["port"]),
|
|
overlays=[str(item) for item in raw.get("overlays", [])],
|
|
arguments=[str(item) for item in raw.get("arguments", [])],
|
|
config=[str(item) for item in raw.get("config", [])],
|
|
)
|