Source code for doitoml.sources.json.package
"""Handles path/task discovery in ``package.json``."""
import re
from pathlib import Path
from typing import Any, Dict
from doitoml.constants import NAME
from doitoml.errors import ParseError
from doitoml.sources._config import ConfigParser, ConfigSource
from ._json import JsonSource
[docs]
class PackageJson(JsonSource, ConfigSource):
"""An npm-compatible ``package.json``."""
@property
def raw_config(self) -> Dict[str, Any]:
"""Load ``doitoml`` configuration from ``pyproject.toml``."""
tool_data = self.to_dict().get(NAME, {})
if isinstance(tool_data, dict):
return tool_data
message = f"Expected a dictionary in {self.path}, found: {tool_data}"
raise ParseError(message)
[docs]
class PackageJsonParser(ConfigParser):
"""Entry point for parsing configuration from ``pyproject.toml``."""
pattern = re.compile(r"package.json$")
well_known = ("./package.json",)
def __call__(self, path: Path) -> PackageJson:
"""Parse a ``doitoml`` configuration from ``pyproject.toml``."""
return PackageJson(path)