Coverage for smith / application / connect.py: 100%
0 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-01 18:48 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-01 18:48 +0000
1"""Connect use-case — wire a project to a template source."""
3from __future__ import annotations
5from pathlib import Path
7from smith.domain.connection import Connection
8from smith.domain.value_objects import TemplateSource
9from smith.infrastructure.filesystem import AtomicFileSystem
10from smith.infrastructure.gitignore import GitignoreManager
11from smith.infrastructure.metadata import SectionMetadata
12from smith.infrastructure.template_source import TemplateSourceAdapter
15class ConnectUseCase:
16 """Orchestrate the connection of a project to a template source."""
18 def __init__(self, project_dir: Path) -> None:
19 """Initialise with the target project directory."""
20 self._project_dir = project_dir
22 def execute(self, source: TemplateSource, overwrite: bool = False) -> None:
23 """Connect the project to the given template source."""
24 connection = Connection(
25 template_source_port=TemplateSourceAdapter(source),
26 filesystem_port=AtomicFileSystem(self._project_dir),
27 gitignore_port=GitignoreManager(self._project_dir),
28 metadata_port=SectionMetadata(self._project_dir),
29 )
30 connection.connect(source=source, overwrite=overwrite)