mirror of https://github.com/mgba-emu/mgba.git
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
#!/usr/bin/env python
|
|
import os
|
|
import os.path
|
|
import shutil
|
|
import yaml
|
|
from cinema.util import dictMerge
|
|
|
|
suffixes = {
|
|
'C': 'CGB',
|
|
'S': 'SGB',
|
|
'A': 'AGB',
|
|
'mgb': 'MGB',
|
|
'sgb': 'SGB',
|
|
'sgb2': 'SGB2',
|
|
'cgb': 'CGB',
|
|
'agb': 'AGB',
|
|
'ags': 'AGB',
|
|
}
|
|
|
|
def ingestDirectory(path, dest):
|
|
for root, _, files in os.walk(path, topdown=False):
|
|
root = root[len(os.path.commonprefix([root, path])):]
|
|
if root.startswith('utils'):
|
|
continue
|
|
for file in files:
|
|
fname, ext = os.path.splitext(file)
|
|
if ext not in ('.gb', '.sym'):
|
|
continue
|
|
|
|
try:
|
|
os.makedirs(os.path.join(dest, root, fname))
|
|
except OSError:
|
|
pass
|
|
|
|
if ext in ('.gb', '.sym'):
|
|
shutil.copy(os.path.join(path, root, file), os.path.join(dest, root, fname, 'test' + ext))
|
|
|
|
for suffix, model in suffixes.items():
|
|
if fname.endswith('-' + suffix):
|
|
manifest = {}
|
|
try:
|
|
with open(os.path.join(dest, root, fname, 'manifest.yml'), 'r') as f:
|
|
manifest = yaml.safe_load(f) or {}
|
|
except IOError:
|
|
pass
|
|
dictMerge(manifest, {
|
|
'config': {
|
|
'gb.model': model
|
|
}
|
|
})
|
|
with open(os.path.join(dest, root, fname, 'manifest.yml'), 'w') as f:
|
|
yaml.dump(manifest, f)
|
|
|
|
if __name__ == '__main__':
|
|
import argparse
|
|
parser = argparse.ArgumentParser(description='Update mooneye-gb test suite')
|
|
parser.add_argument('source', type=str, help='directory containing built tests')
|
|
parser.add_argument('dest', type=str, nargs='?', default=os.path.dirname(__file__), help='directory to contain ingested tests')
|
|
args = parser.parse_args()
|
|
|
|
ingestDirectory(args.source, args.dest)
|