Detector: fingerprint store methods
Signed-off-by: Václav Valíček <valicek1994@gmail.com>
This commit is contained in:
@@ -3,6 +3,7 @@ from pathlib import Path
|
||||
import logging
|
||||
import json
|
||||
from typing import Callable
|
||||
from datetime import datetime
|
||||
|
||||
log = logging.getLogger("rc.detector")
|
||||
|
||||
@@ -38,7 +39,8 @@ class DetectedCommit:
|
||||
|
||||
@property
|
||||
def date(self) -> int:
|
||||
return self._date
|
||||
dt = datetime.fromtimestamp(self._date)
|
||||
return dt.strftime("%d-%m-%Y, %H:%M:%S")
|
||||
|
||||
@property
|
||||
def is_tag(self) -> bool:
|
||||
@@ -69,6 +71,7 @@ class Detector:
|
||||
_repo: RepoTool = None
|
||||
_repo_path: Path = None
|
||||
_detector_dir: Path = None
|
||||
_detector_sum: Path = None
|
||||
_executed: DiskStoredList = None
|
||||
_branches: DiskStoredRefs = None
|
||||
_tags: DiskStoredRefs = None
|
||||
@@ -79,6 +82,7 @@ class Detector:
|
||||
self._repo_path = Path(repo_path)
|
||||
self._repo = RepoTool(repo_path)
|
||||
self._detector_dir = Path(cache_dir).joinpath("detector")
|
||||
self._detector_sum = Path(cache_dir).joinpath("detectorSum")
|
||||
if not self._detector_dir.exists():
|
||||
log.debug(f"Creating detector dir")
|
||||
self._detector_dir.mkdir()
|
||||
@@ -146,6 +150,22 @@ class Detector:
|
||||
for tag, commit in self._repo.list_tags().items():
|
||||
self._tags.update(tag, commit)
|
||||
|
||||
"""
|
||||
returns true if detector run needs to be done
|
||||
"""
|
||||
|
||||
def check_fingerprint(self) -> bool:
|
||||
log.info(f"Checking repo-detector fingerprint")
|
||||
if not self._detector_sum.exists():
|
||||
log.debug(f"Fingerprint file does not exist - run needed")
|
||||
return True
|
||||
old_fingerprint = self._detector_sum.read_text().strip()
|
||||
return not old_fingerprint == self._repo.repo_fingerprint
|
||||
|
||||
def persist_fingerprint(self):
|
||||
log.debug(f"Persisting detector fingerprint")
|
||||
self._detector_sum.write_text(str(self._repo.repo_fingerprint))
|
||||
|
||||
def run(self, callback: Callable[[DetectedCommit], None]) -> int:
|
||||
log.info(f"Running commit detector")
|
||||
new_branches = self._repo.list_branches()
|
||||
@@ -207,4 +227,5 @@ class Detector:
|
||||
env = DetectedCommit(env)
|
||||
executed_count += 1
|
||||
callback(env)
|
||||
self.persist_fingerprint()
|
||||
return executed_count
|
||||
|
||||
Reference in New Issue
Block a user