feat: update logging
This commit is contained in:
+20
-13
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user