def main()

in marketplace/deployer_util/overlay_test_schema.py [0:0]


def main():
  parser = ArgumentParser(description=_PROG_HELP)
  parser.add_argument('--test_schema', help='Test schema file', required=True)
  parser.add_argument(
      '--original_schema', help='Original schema file', required=True)
  parser.add_argument(
      '--output',
      action='append',
      default=[],
      help='Location(s) of the file(s) to output the overlayed schema')
  args = parser.parse_args()

  if os.path.isfile(args.test_schema):
    test_schema = load_yaml(args.test_schema)
  else:
    log.info(
        'Test schema file {} does not exist. '
        'Using the original schema.', args.test_schema)
    test_schema = {}

  output_schema = load_yaml(args.original_schema)
  output_schema['properties'] = output_schema.get('properties', {})
  for prop in test_schema.get('properties', {}):
    test_type = deep_get(test_schema, 'properties', prop,
                         'x-google-marketplace', 'type')
    output_type = deep_get(output_schema, 'properties', prop,
                           'x-google-marketplace', 'type')
    if (test_type != output_type):
      raise Exception(
          'Changing x-google-marketplace type is not allowed. Property: {}',
          prop)
    output_schema['properties'][prop] = test_schema['properties'][prop]

  for output in args.output:
    with open(output, 'w', encoding='utf-8') as f:
      yaml.dump(output_schema, f)