feat: use .gitignore
This commit is contained in:
+24
-11
@@ -1,26 +1,37 @@
|
||||
import logging
|
||||
from collections import Counter
|
||||
from enum import StrEnum
|
||||
from pathlib import Path
|
||||
from typing import Iterable
|
||||
|
||||
from .common.command import CommandError
|
||||
from .entry import Entry, EntryResolver
|
||||
from .common.ignore import create_ignore
|
||||
from .entry.entry import Entry
|
||||
from .entry.resolver import EntryResolver
|
||||
from .preset.detector import PresetEntryDetector
|
||||
|
||||
logger = logging.getLogger("project")
|
||||
|
||||
|
||||
class ResultType(StrEnum):
|
||||
SUCCESS = "success"
|
||||
FAILED = "failed"
|
||||
|
||||
|
||||
RESULT_ICONS = {
|
||||
ResultType.SUCCESS: "🟢",
|
||||
ResultType.FAILED: "🔴",
|
||||
}
|
||||
|
||||
|
||||
class ProjectManager:
|
||||
# TODO: from .gitignore?
|
||||
DEFAULT_IGNORE = ["node_modules", ".venv", ".git", "tests", "__pycache__"]
|
||||
_logger = logger
|
||||
|
||||
def __init__(self, basepath: Path):
|
||||
self._basepaht = basepath
|
||||
self._resolver = EntryResolver(
|
||||
PresetEntryDetector(),
|
||||
self.DEFAULT_IGNORE,
|
||||
)
|
||||
detector = PresetEntryDetector()
|
||||
ignore = create_ignore(basepath)
|
||||
self._resolver = EntryResolver(detector, ignore)
|
||||
|
||||
def _iter_entries(self) -> Iterable[Entry]:
|
||||
return self._resolver.resolve(self._basepaht)
|
||||
@@ -30,12 +41,14 @@ class ProjectManager:
|
||||
for entry in self._iter_entries():
|
||||
try:
|
||||
if entry.run_task(task_name, tag):
|
||||
counter["success"] += 1
|
||||
counter[ResultType.SUCCESS] += 1
|
||||
except CommandError as error:
|
||||
self._logger.error("%s\n%s", entry, error.output)
|
||||
counter["failed"] += 1
|
||||
counter[ResultType.FAILED] += 1
|
||||
except:
|
||||
self._logger.exception(entry)
|
||||
counter["failed"] += 1
|
||||
self._logger.info("result %s", dict(counter))
|
||||
counter[ResultType.FAILED] += 1
|
||||
self._logger.info(
|
||||
"%s", "\n".join(f"{RESULT_ICONS[k]} {v}" for k, v in counter.items())
|
||||
)
|
||||
return counter
|
||||
|
||||
Reference in New Issue
Block a user