| #!/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()) |