Detector: almost complete
Signed-off-by: Václav Valíček <valicek1994@gmail.com>
This commit is contained in:
52
repo_cloner/lib/disk_stored_refs.py
Normal file
52
repo_cloner/lib/disk_stored_refs.py
Normal file
@@ -0,0 +1,52 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
import logging
|
||||
|
||||
log = logging.getLogger("rc.refstor")
|
||||
|
||||
|
||||
class DiskStoredRefs:
|
||||
__file: Path = None
|
||||
__refs: dict = {}
|
||||
|
||||
def __init__(self, file: Path):
|
||||
log.debug(f"Initializing disk stored refs: {file.as_posix()}")
|
||||
self.__file = file
|
||||
self.__refs = {}
|
||||
|
||||
if self.__file.is_file():
|
||||
log.debug(f"Loading from file")
|
||||
self.__refs = dict(json.loads(self.__file.read_text()))
|
||||
|
||||
def __persist(self):
|
||||
|
||||
self.__file.write_text(json.dumps(sorted(self.__refs.items())))
|
||||
|
||||
def keys(self):
|
||||
return list(self.__refs.keys())
|
||||
|
||||
def count(self):
|
||||
log.debug(f"DiskStoredRefs: {len(self.__refs)} items")
|
||||
return len(self.__refs)
|
||||
|
||||
def __len__(self):
|
||||
log.debug(f"DiskStoredRefs: {len(self.__refs)} items")
|
||||
return len(self.__refs)
|
||||
|
||||
def get(self, key):
|
||||
log.debug(f"DiskStoredRefs: getting key {key}")
|
||||
return self.__refs.get(key)
|
||||
|
||||
def remove(self, key) -> bool:
|
||||
if key not in self.__refs:
|
||||
log.debug(f"DiskStoredRefs: {key} not found for deletion")
|
||||
return False
|
||||
log.debug(f"DiskStoredRefs: Deleting key {key}")
|
||||
del self.__refs[key]
|
||||
self.__persist()
|
||||
return True
|
||||
|
||||
def update(self, key: str, value: str):
|
||||
log.debug(f"DiskStoredRefs: update {key} => {value}")
|
||||
self.__refs[key] = value
|
||||
self.__persist()
|
||||
Reference in New Issue
Block a user