smith.application.disconnect
Disconnect use-case — remove agentic files from a project.
1"""Disconnect use-case — remove agentic files from a project.""" 2 3from __future__ import annotations 4 5from pathlib import Path 6 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 13 14 15class DisconnectUseCase: 16 """Orchestrate the disconnection of a project from its template source.""" 17 18 def __init__(self, project_dir: Path) -> None: 19 """Initialise with the target project directory.""" 20 self._project_dir = project_dir 21 22 def execute(self) -> list[Path]: 23 """Disconnect the project and return paths that were removed.""" 24 connection = Connection( 25 template_source_port=TemplateSourceAdapter( 26 TemplateSource(kind="bundled", location="agents-smith"), 27 ), 28 filesystem_port=AtomicFileSystem(self._project_dir), 29 gitignore_port=GitignoreManager(self._project_dir), 30 metadata_port=SectionMetadata(self._project_dir), 31 ) 32 return connection.disconnect()
class
DisconnectUseCase:
16class DisconnectUseCase: 17 """Orchestrate the disconnection of a project from its template source.""" 18 19 def __init__(self, project_dir: Path) -> None: 20 """Initialise with the target project directory.""" 21 self._project_dir = project_dir 22 23 def execute(self) -> list[Path]: 24 """Disconnect the project and return paths that were removed.""" 25 connection = Connection( 26 template_source_port=TemplateSourceAdapter( 27 TemplateSource(kind="bundled", location="agents-smith"), 28 ), 29 filesystem_port=AtomicFileSystem(self._project_dir), 30 gitignore_port=GitignoreManager(self._project_dir), 31 metadata_port=SectionMetadata(self._project_dir), 32 ) 33 return connection.disconnect()
Orchestrate the disconnection of a project from its template source.
DisconnectUseCase(project_dir: pathlib._local.Path)
19 def __init__(self, project_dir: Path) -> None: 20 """Initialise with the target project directory.""" 21 self._project_dir = project_dir
Initialise with the target project directory.
def
execute(self) -> list[pathlib._local.Path]:
23 def execute(self) -> list[Path]: 24 """Disconnect the project and return paths that were removed.""" 25 connection = Connection( 26 template_source_port=TemplateSourceAdapter( 27 TemplateSource(kind="bundled", location="agents-smith"), 28 ), 29 filesystem_port=AtomicFileSystem(self._project_dir), 30 gitignore_port=GitignoreManager(self._project_dir), 31 metadata_port=SectionMetadata(self._project_dir), 32 ) 33 return connection.disconnect()
Disconnect the project and return paths that were removed.