2024-01-11 14:24:48 +00:00
|
|
|
from os import listdir, mkdir, path
|
|
|
|
import re
|
|
|
|
import fetch
|
|
|
|
|
2024-01-11 14:49:34 +00:00
|
|
|
NAME_REGEX = r'(.+\..+?)(_)'
|
2024-01-11 14:24:48 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Cache:
|
|
|
|
def __init__(self, dir: str = "AutoDatabaseGenerator/Resources"):
|
|
|
|
self.dir = dir
|
|
|
|
self._cache = dict()
|
|
|
|
self._scan_cache()
|
|
|
|
|
2024-01-11 14:49:34 +00:00
|
|
|
def get(self, name: str) -> str:
|
2024-01-11 14:24:48 +00:00
|
|
|
if name in self._cache:
|
2024-01-11 14:49:34 +00:00
|
|
|
return path.abspath(path.join(self.dir, self._cache[name]))
|
2024-01-11 14:24:48 +00:00
|
|
|
|
|
|
|
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
|
2024-01-11 14:49:34 +00:00
|
|
|
return path.abspath(path.join(self.dir, self._cache[name]))
|
2024-01-11 14:24:48 +00:00
|
|
|
|
|
|
|
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
|