adg_script/cache.py

41 lines
1.1 KiB
Python

from os import listdir, mkdir, path
import re
import fetch
NAME_REGEX = r'(.+\..+?)(_)'
class Cache:
def __init__(self, dir: str = "AutoDatabaseGenerator/Resources"):
self.dir = dir
self._cache = dict()
self._scan_cache()
def get(self, name: str) -> str:
if name in self._cache:
return path.abspath(path.join(self.dir, self._cache[name]))
print(f"Trying to fetch driver: {name}")
try:
driver = fetch.get_driver_by_exact_name(name)
file = fetch.download_driver(driver, self.dir)
except Exception as e:
raise Exception("Could not fetch driver", e)
self._cache[name] = file
return path.abspath(path.join(self.dir, self._cache[name]))
def _scan_cache(self):
try:
files = listdir(self.dir)
print("files found: ", files)
except FileNotFoundError:
mkdir(self.dir)
return
filtered = [file for file in files if file.endswith('.hrb')]
for file in filtered:
name = re.match(NAME_REGEX, file).group(1)
self._cache[name] = file