blob: ac7e34988d0231431833bf9f72f9ec6cc28d0079 [file] [log] [blame]
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Creates a complete CMX (v1) component manifest, from a program name and
manifest fragment file."""
import argparse
import json
import sys
def BuildCmxFromFragment(output_file, fragment_file, program_binary):
"""Reads a CMX fragment specifying e.g. features & sandbox, and a program
binary's filename, and writes out the full CMX.
output_file: Build-relative filename at which to write the full CMX.
fragment_file: Build-relative filename of the CMX fragment to read from.
program_binary: Package-relative filename of the program binary.
"""
with open(output_file, 'w') as component_manifest_file:
component_manifest = json.load(open(fragment_file, 'r'))
component_manifest.update({
'program': {
'binary': program_binary
},
})
json.dump(component_manifest, component_manifest_file)
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
'--cmx-fragment',
required=True,
help='Path to the CMX fragment to read from')
parser.add_argument(
'--cmx', required=True, help='Path to write the complete CMX file to')
parser.add_argument(
'--program',
required=True,
help='Package-relative path to the program binary')
args = parser.parse_args()
return BuildCmxFromFragment(args.cmx, args.cmx_fragment, args.program)
if __name__ == '__main__':
sys.exit(main())