diff --git a/cache.py b/cache.py new file mode 100644 index 0000000..feb8648 --- /dev/null +++ b/cache.py @@ -0,0 +1,39 @@ +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): + if name in self._cache: + return path.abspath(self.dir + self._cache[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(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