blob: b96f1683b799cec6b85aa61c39f717fe70ecf6bb [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-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().encode("utf-8")).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())