3 from pathlib
import Path
9 SUPPORTED_METADATA_VERSION
= 1
14 for arg
in sys
.argv
[1:]:
15 if os
.path
.isdir(arg
):
16 for path
in Path(arg
).rglob('*.json'):
18 elif os
.path
.isfile(arg
) and arg
.endswith('.json'):
21 sys
.stderr
.write("Not a directory and not a .json file: {} => abort\n".format(arg
))
25 def collect_names(images
):
28 names
.append(image
['name'])
32 with
open(path
, "r") as file:
35 except json
.decoder
.JSONDecodeError
as e
:
36 sys
.stderr
.write("Skip {}\n {}\n".format(path
, e
))
39 if obj
['metadata_version'] != SUPPORTED_METADATA_VERSION
:
40 sys
.stderr
.write('{} has unsupported metadata version: {} => skip\n'.format(path
, obj
['metadata_version']))
43 version
= obj
['version_number']
44 commit
= obj
['version_commit']
46 if not version
in output
:
47 output
[version
] = { 'models' : [], 'commit': commit
}
49 # only support a version_number with images of one version_commit
50 if output
[version
]['commit'] != commit
:
51 sys
.stderr
.write('mixed revisions for a release ({} and {}) => abort\n'.format(output
[version
]['commit'], commit
))
54 for title
in obj
['titles']:
55 output
[version
]['models'].append([title
['vendor'], title
['model'], title
.get('variant', ''), obj
['target'], collect_names(obj
['images'])])
57 json
.dump(output
, sys
.stdout
, sort_keys
=True)
58 #json.dump(output, sys.stdout, sort_keys=True, indent=" ")