from pathlib import Path
import json
+import sys
import os
-import hashlib
+
SUPPORTED_METADATA_VERSION = 1
paths = []
-for path in Path('bin').rglob('*.json'):
- paths.append(path)
-
-version = None
output = {}
+for arg in sys.argv[1:]:
+ if os.path.isdir(arg):
+ for path in Path(arg).rglob('*.json'):
+ paths.append(path)
+ elif os.path.isfile(arg) and arg.endswith('.json'):
+ paths.append(arg)
+ else:
+ sys.stderr.write("Not a directory and not a .json file: {} => abort\n".format(arg))
+ exit(1)
+
+
def collect_names(images):
- names = []
- for image in images:
- names.append(image['name'])
- return names
+ names = []
+ for image in images:
+ names.append(image['name'])
+ return names
for path in paths:
with open(path, "r") as file:
try:
obj = json.load(file)
except json.decoder.JSONDecodeError as e:
- print("Skip {}\n {}".format(path, e))
+ sys.stderr.write("Skip {}\n {}\n".format(path, e))
continue
if obj['metadata_version'] != SUPPORTED_METADATA_VERSION:
- print('{} has unsupported metadata version: {} => skip'.format(path, obj['metadata_version']))
+ sys.stderr.write('{} has unsupported metadata version: {} => skip\n'.format(path, obj['metadata_version']))
continue
version = obj['version_number']
# only support a version_number with images of one version_commit
if output[version]['commit'] != commit:
- print('mixed revisions for a release ({} and {}) => abort'.format(output[version]['commit'], commit))
- break
+ sys.stderr.write('mixed revisions for a release ({} and {}) => abort\n'.format(output[version]['commit'], commit))
+ exit(1)
for title in obj['titles']:
output[version]['models'].append([title['vendor'], title['model'], title.get('variant', ''), obj['target'], collect_names(obj['images'])])
-with open("data.json", "w") as file:
- json.dump(output, file, sort_keys=True, indent=" ")
+json.dump(output, sys.stdout, sort_keys=True)
+#json.dump(output, sys.stdout, sort_keys=True, indent=" ")