Improving mgl filter.

This commit is contained in:
José Manuel Barroso Galindo
2022-12-17 21:03:19 +01:00
parent 02a631a695
commit db5ab8471d
2 changed files with 21 additions and 16 deletions

View File

@@ -155,15 +155,21 @@ filter_part_regex = re.compile("[-_a-z0-9.]$", )
main_binaries = ['MiSTer', 'menu.rbf']
class Metadata:
def __init__(self, props):
self._props = props
def is_mgl_folder(self, folder):
return folder in self._props['folders'] and self._props['folders'][folder]['is_mgl']
class Tags:
def __init__(self, metadata) -> None:
self._metadata = metadata
self._metadata = Metadata(metadata)
self._dict = {}
self._alternatives = {}
self._index = 0
self._report_set = set()
self._used = set()
self._mgls = set()
def init_aliases(self, aliases):
for alias_list in aliases:
@@ -171,13 +177,6 @@ class Tags:
self._dict[self._clean_term(alias)] = self._index
self._index += 1
def pre_process_file(self, path: Path):
suffix = path.suffix.lower()
if suffix == '.mgl':
rbf, setname = read_mgl_fields(path)
if setname is not None:
self._mgls.add(setname.lower())
def get_tags_for_file(self, path: Path):
return sorted(self._get_tags_for_file(path))
@@ -248,7 +247,7 @@ class Tags:
first_level = path.parts[1].lower()
self._append(result, self._use_term(first_level))
if first_level in self._mgls:
if self._metadata.is_mgl_folder(first_level):
self._append(result, self._use_term('mgl'))
second_level = path.parts[2].lower()
@@ -266,7 +265,7 @@ class Tags:
if parent == 'docs':
first_level = path.parts[1].lower()
self._append(result, self._use_term(first_level))
if first_level in self._mgls:
if self._metadata.is_mgl_folder(first_level):
self._append(result, self._use_term('mgl'))
second_level = path.parts[2].lower()
@@ -325,7 +324,7 @@ class Tags:
if (parent == 'games' or parent == 'docs'):
if first_level in ['gba2p', 'gameboy2p']:
self._append(result, self._use_term('handheld2p'))
if first_level in self._mgls:
if self._metadata.is_mgl_folder(first_level):
self._append(result, self._use_term('mgl'))
self._append(result, self._use_term(first_level))
@@ -468,9 +467,6 @@ def create_db(folder, options, tags):
zip_creators = []
stored_folders = []
for file in db_finder.find_all():
tags.pre_process_file(file)
if options['zips_config'] != '':
print('reading zips_config: ' + options['zips_config'])
with open(options['zips_config']) as zips_config_file:

View File

@@ -333,6 +333,7 @@ def impl_install_generic_core(path, target_dir, core, metadata, touch_games_fold
copy_file(f'{releases_dir}/{latest_release}', f'{target_dir}/{core["category"]}/{latest_release}')
binaries.append(bin)
metadata.add_folder(core['home'])
home_folders = [core['home']]
for mgl in mgl_files(releases_dir):
@@ -345,6 +346,7 @@ def impl_install_generic_core(path, target_dir, core, metadata, touch_games_fold
continue
home_folders.append(setname)
metadata.add_mgl_folder(setname)
for folder in home_folders:
for readme in list_readmes(path):
@@ -499,10 +501,17 @@ extra_content_early_installers = {
class Metadata:
@staticmethod
def new_props():
return {}
return {'folders': {}}
def __init__(self, props):
self._props = props
def add_mgl_folder(self, folder):
self._props['folders'][folder] = self._props['folders'].get(folder, {'is_mgl': True})
def add_folder(self, folder):
self._props['folders'][folder] = self._props['folders'].get(folder, {'is_mgl': True})
self._props['folders'][folder]['is_mgl'] = False
def mra_files(folder):
return [without_folder(folder, f) for f in list_files(folder, recursive=False) if Path(f).suffix.lower() == '.mra']