| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- """Docker Compose module."""
- import logging
- from typing import Annotated
- from typer import Argument, Option
- from ...core.module import Module
- from ...core.module.base_commands import ValidationConfig, validate_templates
- from ...core.registry import registry
- from .validate import ComposeDockerValidator
- logger = logging.getLogger(__name__)
- class ComposeModule(Module):
- """Docker Compose module with extended validation."""
- name = "compose"
- description = "Manage Docker Compose configurations"
- kind_validator_class = ComposeDockerValidator
- def validate( # noqa: PLR0913
- self,
- template_id: Annotated[
- str | None,
- Argument(help="Template ID to validate"),
- ] = None,
- *,
- path: Annotated[
- str | None,
- Option("--path", help="Path to template directory for validation"),
- ] = None,
- all_templates: Annotated[
- bool,
- Option("--all", help="Validate all Compose templates"),
- ] = False,
- verbose: Annotated[bool, Option("--verbose", "-v", help="Show detailed validation information")] = False,
- semantic: Annotated[
- bool,
- Option(
- "--semantic",
- help="Enable dependency-matrix semantic validation",
- ),
- ] = False,
- kind: Annotated[
- bool,
- Option(
- "--kind",
- help="Enable dependency-matrix Docker Compose validation",
- ),
- ] = False,
- ) -> None:
- """Validate Compose templates."""
- kind_validator = self.kind_validator_class(verbose).validate_rendered_files if kind else None
- validate_templates(
- self,
- template_id,
- path,
- ValidationConfig(
- verbose=verbose,
- semantic=semantic,
- kind=kind,
- all_templates=all_templates,
- kind_validator=kind_validator,
- ),
- )
- registry.register(ComposeModule)
|