feat: update logging

This commit is contained in:
2023-03-14 23:59:58 +03:00
parent ccdbb00eff
commit 9345b27aef
9 changed files with 180 additions and 31 deletions
+20 -13
View File
@@ -1,32 +1,39 @@
import logging
from collections import Counter
from pathlib import Path
from typing import Iterable
from typing import Dict, Iterable
from .entry import Entry
from .entry import Entry, EntryCommandNotImplementedError
from .nodejs.entry import NodejsEntry
from .python.entry import PythonEntry
from .resolver import EntryDetector, EntryResolver
__all__ = ("ProjectManager",)
logger = logging.getLogger("project")
class ProjectManager:
def __init__(self, basepath: Path, ignore_entry_error: bool = False):
_logger = logger
def __init__(self, basepath: Path):
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):
def run_command(self, command: str) -> Dict[str, int]:
counter = Counter()
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)
getattr(entry, command)()
counter["success"] += 1
except EntryCommandNotImplementedError:
self._logger.warn(f"{command} {entry}")
counter["skipped"] += 1
except Exception:
self._logger.exception(entry)
counter["failed"] += 1
self._logger.info(f"result {dict(counter)}")
return counter