#!/usr/bin/env python3
#
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

""" Parses manifest file and dumps it to json.
"""

import argparse
import json
import os
import sys
import hashlib


def main():
  parser = argparse.ArgumentParser()

  parser.add_argument(
      '--input', dest='file_path', action='store', required=True
  )
  parser.add_argument(
      '--clang-cpu', dest='clang_cpu', action='store', required=True
  )

  args = parser.parse_args()

  with open(args.file_path) as f:
    data = json.load(f)

  output = {}
  target = args.clang_cpu + '-fuchsia'

  for d in data:
    if target in d['target']:
      for runtime in d['runtime']:
        # key contains the soname and the cflags used to compile it.
        # this allows us to distinguish between different sanitizers
        # and experiments
        key = runtime['soname'] + ''.join(d['cflags'])
        md5 = hashlib.md5(key.encode()).hexdigest()
        hash_key = 'md5_%s' % md5
        # Uncomment this line to get the hash keys
        # print runtime['dist'], d['cflags'], hash_key
        output[hash_key] = os.path.dirname(runtime['dist'])

  print(json.dumps(output))

  return 0


if __name__ == '__main__':
  sys.exit(main())
