import argparse
import os
import sys
import json
from scripts.util import build_utils
def parse_args(args):
parser = argparse.ArgumentParser()
parser.add_argument(
'--generated-build-file',
help='path to generated platform build file')
parser.add_argument(
'--required-build-file', help='path to required platform build file')
parser.add_argument(
'--optional-build-file', help='path to optional platform build file')
parser.add_argument(
'--stub-build-file', help='path to stub platform build file')
options = parser.parse_args(args)
return options
def do_merge(required_build_file, optional_build_file, stub_build_file,
generated_build_file):
with open(required_build_file, 'r') as required_f:
required = json.load(required_f)
with open(optional_build_file, 'r') as optional_f:
optional = json.load(optional_f)
with open(stub_build_file, 'r') as stub_f:
stub = json.load(stub_f)
parts = required.get('parts') + optional.get('parts')
stub_parts = list(set(stub.get('stub_parts')) - set(parts))
if not os.path.exists(generated_build_file):
build_utils.touch(generated_build_file)
build_utils.write_json({
'parts': parts,
'stub_parts': stub_parts,
},
generated_build_file,
only_if_changed=True)
def main(args):
options = parse_args(args)
do_merge(options.required_build_file, options.optional_build_file,
options.stub_build_file, options.generated_build_file)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))