| #!/usr/bin/env python3 |
| |
| # Copyright 2021 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| #### CATEGORY=Other |
| |
| import argparse |
| import json |
| import os |
| import sys |
| import textwrap |
| |
| def parse_package_config(input, out, packages): |
| with open(input, 'r') as f: |
| entries = json.load(f)['packages'] |
| |
| rel_to_out = os.path.relpath(os.path.dirname(input), start=os.path.dirname(out)) |
| for entry in entries: |
| root_uri = entry['rootUri'] |
| rel_root_uri = os.path.join(rel_to_out, root_uri) |
| entry['rootUri'] = rel_root_uri |
| packages.append(entry) |
| |
| def main(): |
| parser = argparse.ArgumentParser( |
| description=(textwrap.dedent('''\ |
| Combines two package_config.json files and outputs them as one. |
| ''')), |
| formatter_class=argparse.RawDescriptionHelpFormatter, |
| ) |
| parser.add_argument('--first', |
| help='The path to the first package_config.json file', |
| required=True) |
| parser.add_argument('--second', |
| help='The path to the second package_config.json file', |
| required=True) |
| parser.add_argument('--out', |
| help='The path to the output file', |
| required=True) |
| args = parser.parse_args() |
| |
| packages = [] |
| parse_package_config(args.first, args.out, packages) |
| parse_package_config(args.second, args.out, packages) |
| |
| package_config = { |
| 'configVersion': 2, |
| 'packages': packages, |
| 'generator': os.path.basename(__file__) |
| } |
| |
| with open(args.out, 'w') as package_config_json: |
| package_config_json.write(json.dumps(package_config, sort_keys=True, indent=2)) |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |