feat: add manager, entry and command

This commit is contained in:
2023-03-13 00:06:21 +03:00
parent a8788fbaf9
commit ccdbb00eff
11 changed files with 244 additions and 1 deletions
+32
View File
@@ -0,0 +1,32 @@
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)