version-framework/matrix.py (23 lines of code) (raw):

import json import os import yaml from pathlib import Path def run() -> None: excluded_file = os.getenv("EXCLUDED_FILE", "") framework_file = os.environ["FRAMEWORKS_FILE"] versions_file = os.environ["VERSIONS_FILE"] excludes = {'exclude': []} if len(excluded_file) > 0: excludes = yaml.safe_load(Path(excluded_file).read_text()) frameworks = yaml.safe_load(Path(framework_file).read_text()) versions = yaml.safe_load(Path(versions_file).read_text()) matrix = {'include': []} for version in versions['VERSION']: for framework in frameworks['FRAMEWORK']: if len(list(filter(lambda item: item['VERSION'] == version and item["FRAMEWORK"] == framework, excludes['exclude']))) > 0: print('excluded ' + version + ' with ' + framework) else: matrix['include'].append({"version": version, "framework": framework}) with open(os.environ.get('GITHUB_OUTPUT'), "a") as f: f.write("matrix={}\n".format(json.dumps(matrix))) run()