diff --git a/.github/calculate_db.py b/.github/calculate_db.py index d3c3ecc79..4c6066e49 100755 --- a/.github/calculate_db.py +++ b/.github/calculate_db.py @@ -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: diff --git a/.github/download_distribution.py b/.github/download_distribution.py index 900c4a717..49440c42d 100755 --- a/.github/download_distribution.py +++ b/.github/download_distribution.py @@ -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']