33 lines
938 B
Python
33 lines
938 B
Python
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)
|