Skip to main content

dbml_sharepoint.extension

Packaging — the extension protocol

The deployment-extension protocol: the hook names, parameter order, and return types; this skeleton conforms to it. Validation issues are reported with the validator Finding type.

SiteContext

@dataclass
class SiteContext:
site_url: str
site_role: str
release: Any
output_dir: Path
extension_args: dict[str, typing.Any] = dict()

Per-build inputs hooks need: site URL, site role, release record, output directory, plus extension CLI flag values captured by the extension's own CLI entry point (e.g. {"org_unit": "QSC"}).

ManifestExtras

@dataclass
class ManifestExtras:
sections: dict[str, str] = dict()
warnings: list[str] = list()

Extra manifest content from an extension.

DeploymentExtension

Project-specific extension to the generic deployer.

BaseExtension provides no-op defaults for every hook.

DeploymentExtension.cli_subcommands

def cli_subcommands(self, app: typer.main.Typer) -> None

DeploymentExtension.expand_column

def expand_column(self, table: Any, column: Any, bundle: Any) -> list[dict[str, Any]] | None

DeploymentExtension.extra_validators

def extra_validators(self, bundle: Any, schema: Any) -> list[typing.Any]

DeploymentExtension.manifest_extras

def manifest_extras(self, bundle: Any, schema: Any) -> dbml_sharepoint.extension.ManifestExtras

DeploymentExtension.seed_lists

def seed_lists(self, bundle: Any, schema: Any, site_context: dbml_sharepoint.extension.SiteContext) -> dict[str, dict[str, typing.Any]]

BaseExtension

No-op defaults for the DeploymentExtension protocol; extensions override only what they need.

BaseExtension.cli_subcommands

def cli_subcommands(self, app: typer.main.Typer) -> None

Register wholly-new extension-owned subcommands on the core app. Must never alter core command signatures.

BaseExtension.expand_column

def expand_column(self, table: Any, column: Any, bundle: Any) -> list[dict[str, Any]] | None

BaseExtension.extra_validators

def extra_validators(self, bundle: Any, schema: Any) -> list[typing.Any]

BaseExtension.manifest_extras

def manifest_extras(self, bundle: Any, schema: Any) -> dbml_sharepoint.extension.ManifestExtras

BaseExtension.seed_lists

def seed_lists(self, bundle: Any, schema: Any, site_context: dbml_sharepoint.extension.SiteContext) -> dict[str, dict[str, typing.Any]]

NullExtension

No-op defaults for the DeploymentExtension protocol; extensions override only what they need.

resolve_extension

def resolve_extension(name: str | None) -> dbml_sharepoint.extension.BaseExtension

Resolve by entry-point name; None/'null' -> NullExtension. Raises ValueError listing installed extensions when the name is unknown.