import logging from pathlib import Path from typing import Iterable from .entry import Entry from .nodejs.entry import NodejsEntry from .python.entry import PythonEntry from .resolver import EntryDetector, EntryResolver __all__ = ("ProjectManager",) class ProjectManager: def __init__(self, basepath: Path, ignore_entry_error: bool = False): self._basepaht = basepath self._resolver = EntryResolver(EntryDetector(PythonEntry, NodejsEntry)) self._ignore_entry_error = ignore_entry_error def _iter_entries(self) -> Iterable[Entry]: return self._resolver.resolve(self._basepaht) def setup(self): for entry in self._iter_entries(): try: entry.setup() except Exception as exc: if not self._ignore_entry_error: raise exc def show(self): for entry in self._iter_entries(): print(entry)