blob: 6f3a61e42e307b66ce0358b03240a94ef8dadef1 [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2019 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.
import argparse
import hashlib
import json
import sys
# Builds a representation of the atom's "API" by computing hashes for the files
# that contribute to the atom's API.
#
# This is only meant to be provide a (very) rough signal of changes in an atom.
# Templates that generate sdk_atom instances should generate that file
# themselves instead.
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--file',
help='A (destination <-- source) mapping',
action='append',
nargs=2)
parser.add_argument('--output',
help='The API file to generate',
required=True)
args = parser.parse_args()
api = {}
for destination, source in args.file:
with open(source, 'r') as source_file:
hash = hashlib.md5(source_file.read()).hexdigest()
api[destination] = hash
with open(args.output, 'w') as output_file:
# Specify `separators` to prevent whitespaces at the end of lines.
json.dump(api, output_file, indent=2, sort_keys=True,
separators=(',', ': '))
return 0
if __name__ == '__main__':
sys.exit(main())